@pravalabs/ui 0.0.0-stage → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +142 -2
- package/dist/Accordion-CVRdRha1.js +107 -0
- package/dist/Alert-Bxv6CGPj.js +54 -0
- package/dist/Avatar-DUw9xBQ-.js +49 -0
- package/dist/Badge-cupXlWce.js +37 -0
- package/dist/Button-vjrnnaM_.js +65 -0
- package/dist/Card-BJNdpGjM.js +44 -0
- package/dist/Checkbox-BQtcnwwC.js +60 -0
- package/dist/Container-DO8bd1tv.js +19 -0
- package/dist/Dialog-D3-sT_1Z.js +147 -0
- package/dist/Drawer-BRzJmvQx.js +21 -0
- package/dist/DropdownMenu-CFa2vgXi.js +137 -0
- package/dist/FormField-CoC946w9.js +61 -0
- package/dist/Grid-vTrChm2w.js +31 -0
- package/dist/Input-B97l8Dj0.js +82 -0
- package/dist/Label-DYOFzyEM.js +25 -0
- package/dist/Popover-C9Vgtm3q.js +81 -0
- package/dist/PravaProvider-0znpKV4G.js +59 -0
- package/dist/Progress-_Hz8dxM4.js +51 -0
- package/dist/RadioGroup-CvdV80Pg.js +90 -0
- package/dist/Select-_urp2aA_.js +451 -0
- package/dist/Separator-MnFbL0eH.js +23 -0
- package/dist/Skeleton-CyjiU8o1.js +25 -0
- package/dist/Spinner-Da7h4BDn.js +77 -0
- package/dist/Stack-DNtmh6BN.js +30 -0
- package/dist/Switch-Cp-wriw6.js +50 -0
- package/dist/Tabs-C0SRJSv1.js +158 -0
- package/dist/Textarea-D0fNA7sQ.js +69 -0
- package/dist/Toast-7qJXHzEb.js +110 -0
- package/dist/Tooltip-CyW8YfU9.js +57 -0
- package/dist/accordion.js +8 -0
- package/dist/alert.js +7 -0
- package/dist/avatar.js +7 -0
- package/dist/badge.js +7 -0
- package/dist/button.js +7 -0
- package/dist/card.js +10 -0
- package/dist/checkbox.js +8 -0
- package/dist/components/accordion/Accordion.d.ts +42 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/alert/Alert.d.ts +35 -0
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/avatar/Avatar.d.ts +16 -0
- package/dist/components/avatar/index.d.ts +2 -0
- package/dist/components/badge/Badge.d.ts +22 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/button/Button.d.ts +50 -0
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/card/Card.d.ts +49 -0
- package/dist/components/card/index.d.ts +2 -0
- package/dist/components/checkbox/Checkbox.d.ts +23 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/container/Container.d.ts +22 -0
- package/dist/components/container/index.d.ts +2 -0
- package/dist/components/dialog/Dialog.d.ts +89 -0
- package/dist/components/dialog/index.d.ts +2 -0
- package/dist/components/drawer/Drawer.d.ts +46 -0
- package/dist/components/drawer/index.d.ts +2 -0
- package/dist/components/dropdown-menu/DropdownMenu.d.ts +59 -0
- package/dist/components/dropdown-menu/index.d.ts +2 -0
- package/dist/components/field/field.d.ts +87 -0
- package/dist/components/form-field/FormField.d.ts +41 -0
- package/dist/components/form-field/index.d.ts +2 -0
- package/dist/components/grid/Grid.d.ts +36 -0
- package/dist/components/grid/index.d.ts +2 -0
- package/dist/components/input/Input.d.ts +35 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/label/Label.d.ts +15 -0
- package/dist/components/label/index.d.ts +2 -0
- package/dist/components/popover/Popover.d.ts +35 -0
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/progress/Progress.d.ts +15 -0
- package/dist/components/progress/index.d.ts +2 -0
- package/dist/components/provider/PravaProvider.d.ts +69 -0
- package/dist/components/provider/index.d.ts +2 -0
- package/dist/components/radio-group/RadioGroup.d.ts +58 -0
- package/dist/components/radio-group/index.d.ts +2 -0
- package/dist/components/select/Select.d.ts +76 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/separator/Separator.d.ts +9 -0
- package/dist/components/separator/index.d.ts +2 -0
- package/dist/components/skeleton/Skeleton.d.ts +7 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/spinner/Spinner.d.ts +15 -0
- package/dist/components/spinner/index.d.ts +2 -0
- package/dist/components/stack/Stack.d.ts +38 -0
- package/dist/components/stack/index.d.ts +2 -0
- package/dist/components/switch/Switch.d.ts +19 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/tabs/Tabs.d.ts +69 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/textarea/Textarea.d.ts +26 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/toast/Toast.d.ts +55 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/tooltip/Tooltip.d.ts +22 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/container.js +7 -0
- package/dist/dialog.js +8 -0
- package/dist/drawer.js +8 -0
- package/dist/dropdown-menu.js +8 -0
- package/dist/field-U1YinldE.js +152 -0
- package/dist/form-field.js +8 -0
- package/dist/grid.js +7 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.js +29 -0
- package/dist/input.js +8 -0
- package/dist/internal/overlay.d.ts +39 -0
- package/dist/internal/useControllable.d.ts +2 -0
- package/dist/label.js +8 -0
- package/dist/overlay-9zlvgpUZ.js +121 -0
- package/dist/popover.js +8 -0
- package/dist/progress.js +7 -0
- package/dist/provider.js +7 -0
- package/dist/radio-group.js +8 -0
- package/dist/select.js +8 -0
- package/dist/separator.js +7 -0
- package/dist/skeleton.js +7 -0
- package/dist/spinner.js +7 -0
- package/dist/stack.js +7 -0
- package/dist/styles/components/accordion.css +1 -0
- package/dist/styles/components/alert.css +1 -0
- package/dist/styles/components/avatar.css +1 -0
- package/dist/styles/components/badge.css +1 -0
- package/dist/styles/components/button.css +1 -0
- package/dist/styles/components/card.css +1 -0
- package/dist/styles/components/checkbox.css +1 -0
- package/dist/styles/components/container.css +1 -0
- package/dist/styles/components/dialog.css +1 -0
- package/dist/styles/components/drawer.css +1 -0
- package/dist/styles/components/dropdown-menu.css +1 -0
- package/dist/styles/components/field.css +1 -0
- package/dist/styles/components/floating.css +1 -0
- package/dist/styles/components/form-field.css +1 -0
- package/dist/styles/components/grid.css +1 -0
- package/dist/styles/components/input.css +1 -0
- package/dist/styles/components/label.css +1 -0
- package/dist/styles/components/popover.css +1 -0
- package/dist/styles/components/progress.css +1 -0
- package/dist/styles/components/provider.css +1 -0
- package/dist/styles/components/radio-group.css +1 -0
- package/dist/styles/components/select.css +1 -0
- package/dist/styles/components/separator.css +1 -0
- package/dist/styles/components/skeleton.css +1 -0
- package/dist/styles/components/spinner.css +1 -0
- package/dist/styles/components/stack.css +1 -0
- package/dist/styles/components/switch.css +1 -0
- package/dist/styles/components/tabs.css +1 -0
- package/dist/styles/components/textarea.css +1 -0
- package/dist/styles/components/toast.css +1 -0
- package/dist/styles/components/tooltip.css +1 -0
- package/dist/styles.css +1 -0
- package/dist/switch.js +8 -0
- package/dist/tabs.js +10 -0
- package/dist/textarea.js +8 -0
- package/dist/toast.js +9 -0
- package/dist/tokens.css +192 -0
- package/dist/tooltip.js +8 -0
- package/dist/useControllable-C2Te1pSd.js +14 -0
- package/package.json +223 -4
package/dist/dialog.js
ADDED
package/dist/drawer.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as h, Fragment as F, jsx as d } from "react/jsx-runtime";
|
|
3
|
+
import { useContext as O, useId as P, useState as S, useRef as E, forwardRef as k, createContext as T } from "react";
|
|
4
|
+
import { u as L } from "./PravaProvider-0znpKV4G.js";
|
|
5
|
+
const U = T(!1), y = (e) => e != null && e !== !1 && e !== !0 && e !== "", N = (e, r) => {
|
|
6
|
+
typeof e == "function" ? e(r) : e && (e.current = r);
|
|
7
|
+
};
|
|
8
|
+
function q({ field: e, ...r }, n, t = "value") {
|
|
9
|
+
if (!e) return { ...r, ref: n };
|
|
10
|
+
const { ref: i, onChange: a, onBlur: l, value: c, ...u } = e;
|
|
11
|
+
return {
|
|
12
|
+
...u,
|
|
13
|
+
// register() has no value key and leaves the control uncontrolled; Controller's value drives it.
|
|
14
|
+
..."value" in e && {
|
|
15
|
+
[t]: t === "checked" ? !!c : c
|
|
16
|
+
},
|
|
17
|
+
...r,
|
|
18
|
+
onChange: (s) => {
|
|
19
|
+
r.onChange?.(s), a?.(s);
|
|
20
|
+
},
|
|
21
|
+
onBlur: (s) => {
|
|
22
|
+
r.onBlur?.(s), l?.(s);
|
|
23
|
+
},
|
|
24
|
+
ref: (s) => {
|
|
25
|
+
N(i, s), N(n, s);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const $ = (e, r, n) => e.replace(/\{(\w+)\}/g, (t, i) => {
|
|
30
|
+
const a = r[i];
|
|
31
|
+
return typeof a == "number" ? new Intl.NumberFormat(n).format(a) : String(a);
|
|
32
|
+
}), x = /* @__PURE__ */ new WeakSet();
|
|
33
|
+
function z(e, r, n) {
|
|
34
|
+
if (x.has(e)) return;
|
|
35
|
+
x.add(e);
|
|
36
|
+
let t = e, i;
|
|
37
|
+
for (; t && !i; )
|
|
38
|
+
i = Object.getOwnPropertyDescriptor(t, r), t = Object.getPrototypeOf(t);
|
|
39
|
+
const { get: a, set: l } = i ?? {};
|
|
40
|
+
!a || !l || Object.defineProperty(e, r, {
|
|
41
|
+
configurable: !0,
|
|
42
|
+
get() {
|
|
43
|
+
return a.call(this);
|
|
44
|
+
},
|
|
45
|
+
set(c) {
|
|
46
|
+
l.call(this, c), n();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function D(e, r, n) {
|
|
51
|
+
const t = e.validity;
|
|
52
|
+
if (t.valid) return;
|
|
53
|
+
const i = (a) => $(
|
|
54
|
+
a,
|
|
55
|
+
new Proxy(
|
|
56
|
+
{},
|
|
57
|
+
{
|
|
58
|
+
get: (l, c) => {
|
|
59
|
+
const u = String(
|
|
60
|
+
e[c]
|
|
61
|
+
);
|
|
62
|
+
return u !== "" && Number.isFinite(Number(u)) ? Number(u) : u;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
n
|
|
67
|
+
);
|
|
68
|
+
return t.valueMissing ? e.tagName === "SELECT" || e.type === "checkbox" || e.type === "radio" ? r.valueMissingChoice : r.valueMissing : t.typeMismatch ? e.type === "url" ? r.typeMismatchUrl : r.typeMismatchEmail : t.badInput ? r.badInput : t.patternMismatch ? e.title || r.patternMismatch : t.tooShort ? i(r.tooShort) : t.tooLong ? i(r.tooLong) : t.rangeUnderflow ? i(r.rangeUnderflow) : t.rangeOverflow ? i(r.rangeOverflow) : t.stepMismatch ? r.stepMismatch : e.validationMessage;
|
|
69
|
+
}
|
|
70
|
+
function G({
|
|
71
|
+
id: e,
|
|
72
|
+
description: r,
|
|
73
|
+
error: n,
|
|
74
|
+
invalid: t,
|
|
75
|
+
onBlur: i,
|
|
76
|
+
onChange: a,
|
|
77
|
+
onInvalid: l,
|
|
78
|
+
...c
|
|
79
|
+
}) {
|
|
80
|
+
const u = O(U), { messages: s, locale: C } = L(), B = P(), [m, I] = S(), M = E(!1), v = e ?? B, _ = y(n) ? n : m, g = y(r) ? `${v}-description` : void 0, p = y(_) ? `${v}-error` : void 0, j = t || n === !0 || !!p || c["aria-invalid"] === !0 || c["aria-invalid"] === "true", b = (o, f = !1) => {
|
|
81
|
+
u || !f && o.form?.noValidate || I(D(o, s, C));
|
|
82
|
+
};
|
|
83
|
+
return {
|
|
84
|
+
id: v,
|
|
85
|
+
controlProps: {
|
|
86
|
+
id: v,
|
|
87
|
+
"aria-invalid": j || void 0,
|
|
88
|
+
"aria-describedby": [c["aria-describedby"], g, p].filter(Boolean).join(" ") || void 0,
|
|
89
|
+
onBlur: (o) => {
|
|
90
|
+
i?.(o), (M.current || m) && b(o.currentTarget);
|
|
91
|
+
},
|
|
92
|
+
onChange: (o) => {
|
|
93
|
+
a?.(o), M.current = !0, m && b(o.currentTarget);
|
|
94
|
+
},
|
|
95
|
+
onInvalid: (o) => {
|
|
96
|
+
if (l?.(o), o.defaultPrevented || u) return;
|
|
97
|
+
o.preventDefault();
|
|
98
|
+
const f = o.currentTarget;
|
|
99
|
+
b(f, !0), Array.from(f.form?.elements ?? []).find(
|
|
100
|
+
(w) => w.willValidate && !w.validity.valid
|
|
101
|
+
) === f && f.focus();
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
messages: /* @__PURE__ */ h(F, { children: [
|
|
105
|
+
g && /* @__PURE__ */ d("div", { id: g, className: "prava-field__description", children: r }),
|
|
106
|
+
p && /* @__PURE__ */ h("div", { id: p, className: "prava-field__error", children: [
|
|
107
|
+
/* @__PURE__ */ h("svg", { viewBox: "0 0 16 16", "aria-hidden": "true", children: [
|
|
108
|
+
/* @__PURE__ */ d("circle", { cx: "8", cy: "8", r: "6.5" }),
|
|
109
|
+
/* @__PURE__ */ d("path", { d: "M8 4.75v3.5M8 11h.01" })
|
|
110
|
+
] }),
|
|
111
|
+
/* @__PURE__ */ d("span", { children: _ })
|
|
112
|
+
] })
|
|
113
|
+
] })
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const H = k(function({ kind: r, label: n, className: t, style: i, ...a }, l) {
|
|
117
|
+
return /* @__PURE__ */ h(
|
|
118
|
+
"label",
|
|
119
|
+
{
|
|
120
|
+
className: ["prava-choice", `prava-${r}`, t].filter(Boolean).join(" "),
|
|
121
|
+
style: i,
|
|
122
|
+
children: [
|
|
123
|
+
/* @__PURE__ */ h("span", { className: "prava-choice__control", children: [
|
|
124
|
+
/* @__PURE__ */ d(
|
|
125
|
+
"input",
|
|
126
|
+
{
|
|
127
|
+
...a,
|
|
128
|
+
ref: l,
|
|
129
|
+
type: r === "radio" ? "radio" : "checkbox",
|
|
130
|
+
role: r === "switch" ? "switch" : void 0,
|
|
131
|
+
className: "prava-choice__input"
|
|
132
|
+
}
|
|
133
|
+
),
|
|
134
|
+
/* @__PURE__ */ d("span", { className: "prava-choice__indicator", "aria-hidden": "true", children: r === "checkbox" && /* @__PURE__ */ h("svg", { viewBox: "0 0 16 16", children: [
|
|
135
|
+
/* @__PURE__ */ d("path", { className: "prava-choice__check", d: "M3.5 8.5l3 3 6-7" }),
|
|
136
|
+
/* @__PURE__ */ d("path", { className: "prava-choice__dash", d: "M4 8h8" })
|
|
137
|
+
] }) })
|
|
138
|
+
] }),
|
|
139
|
+
n != null && /* @__PURE__ */ d("span", { className: "prava-choice__label", children: n })
|
|
140
|
+
]
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
});
|
|
144
|
+
export {
|
|
145
|
+
H as C,
|
|
146
|
+
U as F,
|
|
147
|
+
q as b,
|
|
148
|
+
$ as f,
|
|
149
|
+
z as o,
|
|
150
|
+
N as s,
|
|
151
|
+
G as u
|
|
152
|
+
};
|
package/dist/grid.js
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export { Button } from './components/button';
|
|
2
|
+
export type { ButtonProps } from './components/button';
|
|
3
|
+
export { Badge } from './components/badge';
|
|
4
|
+
export type { BadgeProps } from './components/badge';
|
|
5
|
+
export { Avatar } from './components/avatar';
|
|
6
|
+
export type { AvatarProps } from './components/avatar';
|
|
7
|
+
export { Spinner } from './components/spinner';
|
|
8
|
+
export type { SpinnerProps } from './components/spinner';
|
|
9
|
+
export { Input } from './components/input';
|
|
10
|
+
export type { InputProps } from './components/input';
|
|
11
|
+
export { Card, CardContent, CardFooter, CardHeader } from './components/card';
|
|
12
|
+
export type { CardContentProps, CardFooterProps, CardHeaderProps, CardProps, } from './components/card';
|
|
13
|
+
export { Separator } from './components/separator';
|
|
14
|
+
export type { SeparatorProps } from './components/separator';
|
|
15
|
+
export { Skeleton } from './components/skeleton';
|
|
16
|
+
export type { SkeletonProps } from './components/skeleton';
|
|
17
|
+
export { Progress } from './components/progress';
|
|
18
|
+
export type { ProgressProps } from './components/progress';
|
|
19
|
+
export { Textarea } from './components/textarea';
|
|
20
|
+
export type { TextareaProps } from './components/textarea';
|
|
21
|
+
export { Label } from './components/label';
|
|
22
|
+
export type { LabelProps } from './components/label';
|
|
23
|
+
export { FormField } from './components/form-field';
|
|
24
|
+
export type { FormFieldProps } from './components/form-field';
|
|
25
|
+
export { PravaProvider } from './components/provider';
|
|
26
|
+
export type { BuiltInMessages, PravaProviderProps, } from './components/provider';
|
|
27
|
+
export { Checkbox } from './components/checkbox';
|
|
28
|
+
export type { CheckboxProps } from './components/checkbox';
|
|
29
|
+
export { Switch } from './components/switch';
|
|
30
|
+
export type { SwitchProps } from './components/switch';
|
|
31
|
+
export { RadioGroup } from './components/radio-group';
|
|
32
|
+
export type { RadioGroupProps, RadioOption } from './components/radio-group';
|
|
33
|
+
export { Select } from './components/select';
|
|
34
|
+
export type { SelectOption, SelectOptionGroup, SelectProps, } from './components/select';
|
|
35
|
+
export { Alert } from './components/alert';
|
|
36
|
+
export type { AlertProps } from './components/alert';
|
|
37
|
+
export { Container } from './components/container';
|
|
38
|
+
export type { ContainerProps } from './components/container';
|
|
39
|
+
export { Stack } from './components/stack';
|
|
40
|
+
export type { StackProps } from './components/stack';
|
|
41
|
+
export { Grid } from './components/grid';
|
|
42
|
+
export type { GridProps } from './components/grid';
|
|
43
|
+
export { Dialog, DialogClose } from './components/dialog';
|
|
44
|
+
export type { DialogProps } from './components/dialog';
|
|
45
|
+
export { Drawer, DrawerClose } from './components/drawer';
|
|
46
|
+
export type { DrawerProps } from './components/drawer';
|
|
47
|
+
export { Popover } from './components/popover';
|
|
48
|
+
export type { PopoverProps } from './components/popover';
|
|
49
|
+
export { Tooltip } from './components/tooltip';
|
|
50
|
+
export type { TooltipProps } from './components/tooltip';
|
|
51
|
+
export { DropdownMenu } from './components/dropdown-menu';
|
|
52
|
+
export type { DropdownMenuAction, DropdownMenuGroup, DropdownMenuItem, DropdownMenuProps, DropdownMenuSeparator, } from './components/dropdown-menu';
|
|
53
|
+
export { Tab, TabList, TabPanel, Tabs } from './components/tabs';
|
|
54
|
+
export type { TabListProps, TabPanelProps, TabProps, TabsProps, } from './components/tabs';
|
|
55
|
+
export { Accordion, AccordionItem } from './components/accordion';
|
|
56
|
+
export type { AccordionItemProps, AccordionProps, } from './components/accordion';
|
|
57
|
+
export { dismissToast, toast, Toaster } from './components/toast';
|
|
58
|
+
export type { ToasterProps, ToastOptions } from './components/toast';
|
|
59
|
+
export type { FieldBinding, FieldProps } from './components/field/field';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export * from './button.js';
|
|
2
|
+
export * from './badge.js';
|
|
3
|
+
export * from './avatar.js';
|
|
4
|
+
export * from './spinner.js';
|
|
5
|
+
export * from './input.js';
|
|
6
|
+
export * from './card.js';
|
|
7
|
+
export * from './separator.js';
|
|
8
|
+
export * from './skeleton.js';
|
|
9
|
+
export * from './progress.js';
|
|
10
|
+
export * from './textarea.js';
|
|
11
|
+
export * from './label.js';
|
|
12
|
+
export * from './form-field.js';
|
|
13
|
+
export * from './checkbox.js';
|
|
14
|
+
export * from './switch.js';
|
|
15
|
+
export * from './radio-group.js';
|
|
16
|
+
export * from './select.js';
|
|
17
|
+
export * from './alert.js';
|
|
18
|
+
export * from './container.js';
|
|
19
|
+
export * from './stack.js';
|
|
20
|
+
export * from './grid.js';
|
|
21
|
+
export * from './dialog.js';
|
|
22
|
+
export * from './drawer.js';
|
|
23
|
+
export * from './popover.js';
|
|
24
|
+
export * from './tooltip.js';
|
|
25
|
+
export * from './dropdown-menu.js';
|
|
26
|
+
export * from './tabs.js';
|
|
27
|
+
export * from './accordion.js';
|
|
28
|
+
export * from './toast.js';
|
|
29
|
+
export * from './provider.js';
|
package/dist/input.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ReactElement, RefObject } from 'react';
|
|
2
|
+
type Props = Record<string, unknown>;
|
|
3
|
+
/** Merges handlers so the consumer's runs first and `preventDefault` opts out of Prava's. */
|
|
4
|
+
export declare function mergeHandlers(own: object, extra: Props): {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
};
|
|
7
|
+
/** Adds ARIA and handlers to a consumer's trigger element without a wrapper or a ref. */
|
|
8
|
+
export declare const cloneTrigger: (trigger: ReactElement, extra: Props) => ReactElement<Props, string | import('react').JSXElementConstructor<any>>;
|
|
9
|
+
/**
|
|
10
|
+
* Stays true after `open` turns false until the element's exit transition ends, so content
|
|
11
|
+
* can unmount without cutting the animation short. No transition (reduced motion) ends at once.
|
|
12
|
+
*/
|
|
13
|
+
export declare function usePresence(open: boolean, ref: RefObject<HTMLElement | null>): boolean;
|
|
14
|
+
/** Stops the page scrolling behind a modal without shifting layout; nested modals share one lock. */
|
|
15
|
+
export declare function lockScroll(): () => void;
|
|
16
|
+
export type FloatingPlacement = "top" | "bottom" | "start" | "end";
|
|
17
|
+
export type FloatingAlign = "start" | "center" | "end";
|
|
18
|
+
export type FloatingOptions = {
|
|
19
|
+
/** Space between anchor and popup. */
|
|
20
|
+
gap?: number;
|
|
21
|
+
/** Space kept from the viewport edges. */
|
|
22
|
+
margin?: number;
|
|
23
|
+
/** Full height of a popup whose inner scroller hides it from `scrollHeight`. */
|
|
24
|
+
contentHeight?: number;
|
|
25
|
+
/** Opens beside the anchor when neither above nor below can show this many pixels. */
|
|
26
|
+
minBlockRoom?: number;
|
|
27
|
+
/** Keeps `placement` whenever it leaves usable room, instead of moving to a roomier side. */
|
|
28
|
+
strict?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/** Positions `popup` beside `anchor`, flipping to the roomier side and staying on screen. */
|
|
31
|
+
export declare function placeFloating(anchor: Element, popup: HTMLElement, placement: FloatingPlacement, align: FloatingAlign, { gap, margin, contentHeight, minBlockRoom, strict, }?: FloatingOptions): void;
|
|
32
|
+
/**
|
|
33
|
+
* Shows `popup` in the top layer while open and keeps it attached to the first element in `root`.
|
|
34
|
+
* The top layer is what lets it escape a Card, a scroll container, or a modal Dialog.
|
|
35
|
+
*/
|
|
36
|
+
export declare function useFloating(open: boolean, root: RefObject<HTMLElement | null>, popup: RefObject<HTMLElement | null>, placement: FloatingPlacement, align: FloatingAlign): void;
|
|
37
|
+
/** Closes on a press outside `root`, which holds both the trigger and the popup. */
|
|
38
|
+
export declare function useOutsidePress(open: boolean, root: RefObject<HTMLElement | null>, close: () => void): void;
|
|
39
|
+
export {};
|
package/dist/label.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useState as O, useEffect as M, cloneElement as $ } from "react";
|
|
3
|
+
function C(t, e) {
|
|
4
|
+
const o = { ...e };
|
|
5
|
+
for (const n of Object.keys(e)) {
|
|
6
|
+
const s = t[n], i = e[n];
|
|
7
|
+
n.startsWith("on") && typeof s == "function" && (o[n] = (u) => {
|
|
8
|
+
s(u), u.defaultPrevented || i(u);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
return o;
|
|
12
|
+
}
|
|
13
|
+
const B = (t, e) => $(
|
|
14
|
+
t,
|
|
15
|
+
C(t.props, e)
|
|
16
|
+
);
|
|
17
|
+
function R(t, e) {
|
|
18
|
+
const [o, n] = O(t);
|
|
19
|
+
return t && !o && n(!0), M(() => {
|
|
20
|
+
if (t || !o) return;
|
|
21
|
+
let s = !0;
|
|
22
|
+
return Promise.allSettled(
|
|
23
|
+
(e.current?.getAnimations?.() ?? []).map((i) => i.finished)
|
|
24
|
+
).then(() => {
|
|
25
|
+
s && n(!1);
|
|
26
|
+
}), () => {
|
|
27
|
+
s = !1;
|
|
28
|
+
};
|
|
29
|
+
}, [t, o, e]), o;
|
|
30
|
+
}
|
|
31
|
+
let P = 0, W = () => {
|
|
32
|
+
};
|
|
33
|
+
function j() {
|
|
34
|
+
if (P++ === 0) {
|
|
35
|
+
const { style: t, clientWidth: e } = document.documentElement, { overflow: o, scrollbarGutter: n } = t;
|
|
36
|
+
window.innerWidth > e && (t.scrollbarGutter = "stable"), t.overflow = "hidden", W = () => {
|
|
37
|
+
t.overflow = o, t.scrollbarGutter = n;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return () => {
|
|
41
|
+
--P === 0 && W();
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const E = {
|
|
45
|
+
top: "bottom",
|
|
46
|
+
bottom: "top",
|
|
47
|
+
left: "right",
|
|
48
|
+
right: "left"
|
|
49
|
+
}, k = (t, e, o) => Math.max(o, Math.min(t, e - o));
|
|
50
|
+
function F(t, e, o, n, {
|
|
51
|
+
gap: s = 6,
|
|
52
|
+
margin: i = 8,
|
|
53
|
+
contentHeight: u,
|
|
54
|
+
minBlockRoom: h = 0,
|
|
55
|
+
strict: v = !1
|
|
56
|
+
} = {}) {
|
|
57
|
+
const { style: f } = e;
|
|
58
|
+
f.left = f.top = "0px";
|
|
59
|
+
const c = t.getBoundingClientRect(), g = getComputedStyle(e), y = g.direction === "rtl", S = document.documentElement.clientWidth, x = window.innerHeight, m = parseFloat(g.width) || e.offsetWidth, a = u ?? e.scrollHeight, d = {
|
|
60
|
+
top: c.top - s - i,
|
|
61
|
+
bottom: x - c.bottom - s - i,
|
|
62
|
+
left: c.left - s - i,
|
|
63
|
+
right: S - c.right - s - i
|
|
64
|
+
}, p = y ? "right" : "left";
|
|
65
|
+
let r = o === "start" ? p : o === "end" ? E[p] : o;
|
|
66
|
+
const z = r === "left" || r === "right", H = d[r] >= (z ? m : Math.min(a, h));
|
|
67
|
+
if ((!v || !H) && (d[r] < (z ? m : a) && d[E[r]] > d[r] && (r = E[r]), (r === "left" || r === "right") && d[r] < m && (r = d.bottom >= d.top ? "bottom" : "top"), Math.max(d.top, d.bottom) < Math.min(a, h))) {
|
|
68
|
+
const l = [E[p], p].find(
|
|
69
|
+
(L) => d[L] >= m
|
|
70
|
+
);
|
|
71
|
+
l && (r = l);
|
|
72
|
+
}
|
|
73
|
+
let w, b;
|
|
74
|
+
if (r === "top" || r === "bottom") {
|
|
75
|
+
const l = Math.min(a, Math.max(d[r], 0));
|
|
76
|
+
f.maxBlockSize = l < a ? `${l}px` : "", b = r === "bottom" ? c.bottom + s : c.top - s - l, w = n === "center" ? c.left + (c.width - m) / 2 : (y ? n === "end" : n === "start") ? c.left : c.right - m, w = k(w, S - m, i);
|
|
77
|
+
} else {
|
|
78
|
+
const l = Math.min(a, x - i * 2);
|
|
79
|
+
f.maxBlockSize = l < a ? `${l}px` : "", w = r === "right" ? c.right + s : c.left - s - m, b = n === "center" ? c.top + (c.height - l) / 2 : n === "start" ? c.top : c.bottom - l, b = k(b, x - l, i);
|
|
80
|
+
}
|
|
81
|
+
e.dataset.side = r, f.left = `${w}px`, f.top = `${b}px`;
|
|
82
|
+
}
|
|
83
|
+
function A(t, e, o, n, s) {
|
|
84
|
+
M(() => {
|
|
85
|
+
const i = o.current, u = e.current?.firstElementChild;
|
|
86
|
+
if (!i || !u) return;
|
|
87
|
+
if (!t) {
|
|
88
|
+
i.matches?.(":popover-open") && i.hidePopover();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
i.showPopover?.();
|
|
92
|
+
const h = () => F(u, i, n, s);
|
|
93
|
+
h();
|
|
94
|
+
const v = (c) => {
|
|
95
|
+
i.contains(c.target) || h();
|
|
96
|
+
};
|
|
97
|
+
window.addEventListener("resize", h), window.addEventListener("scroll", v, !0);
|
|
98
|
+
const f = typeof ResizeObserver > "u" ? void 0 : new ResizeObserver(h);
|
|
99
|
+
return f?.observe(i), () => {
|
|
100
|
+
window.removeEventListener("resize", h), window.removeEventListener("scroll", v, !0), f?.disconnect();
|
|
101
|
+
};
|
|
102
|
+
}, [t, e, o, n, s]);
|
|
103
|
+
}
|
|
104
|
+
function T(t, e, o) {
|
|
105
|
+
M(() => {
|
|
106
|
+
if (!t) return;
|
|
107
|
+
const n = (s) => {
|
|
108
|
+
e.current?.contains(s.target) || o();
|
|
109
|
+
};
|
|
110
|
+
return document.addEventListener("pointerdown", n), () => document.removeEventListener("pointerdown", n);
|
|
111
|
+
}, [t, e, o]);
|
|
112
|
+
}
|
|
113
|
+
export {
|
|
114
|
+
A as a,
|
|
115
|
+
T as b,
|
|
116
|
+
B as c,
|
|
117
|
+
j as l,
|
|
118
|
+
C as m,
|
|
119
|
+
F as p,
|
|
120
|
+
R as u
|
|
121
|
+
};
|
package/dist/popover.js
ADDED
package/dist/progress.js
ADDED
package/dist/provider.js
ADDED
package/dist/select.js
ADDED
package/dist/skeleton.js
ADDED
package/dist/spinner.js
ADDED
package/dist/stack.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}@layer prava.components{.prava-accordion{min-width:0;font-size:var(--prava-font-size-3);color:var(--prava-color-text);line-height:var(--prava-line-height-normal)}.prava-accordion__item{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--prava-color-border)}.prava-accordion__item:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.prava-accordion__heading{font:inherit;margin:0}.prava-accordion__trigger{box-sizing:border-box;min-height:calc(var(--spacing,.25rem) * 12);cursor:pointer;justify-content:space-between;align-items:center;gap:calc(var(--spacing,.25rem) * 3);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:calc(var(--spacing,.25rem) * 3);text-align:start;color:var(--prava-color-text);font:inherit;font-weight:var(--prava-font-weight-medium);outline:var(--prava-stroke) solid transparent;outline-offset:calc(var(--prava-stroke) * -1);border-radius:var(--prava-radius-sm);transition:background-color var(--prava-duration-fast) var(--prava-ease-standard);-webkit-tap-highlight-color:transparent;background-color:#0000;border-width:0;display:flex}@media(hover:hover){.prava-accordion__trigger:not(:disabled):hover{background-color:var(--prava-color-surface-hover)}}.prava-accordion__trigger:focus-visible{outline-color:var(--prava-color-focus)}.prava-accordion__trigger:disabled{cursor:not-allowed;opacity:.5}.prava-accordion__title{overflow-wrap:anywhere;min-width:0}.prava-accordion__chevron{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);color:var(--prava-color-text-muted);fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;transition:rotate var(--prava-duration-normal) var(--prava-ease-standard);flex:none}.prava-accordion__item[data-open]>*>*>.prava-accordion__chevron{rotate:180deg}.prava-accordion__panel{visibility:hidden;transition:grid-template-rows var(--prava-duration-normal) var(--prava-ease-standard),visibility var(--prava-duration-normal) allow-discrete;grid-template-rows:0fr;display:grid}.prava-accordion__item[data-open]>.prava-accordion__panel{visibility:visible;grid-template-rows:1fr}.prava-accordion__clip{min-height:0;overflow:hidden}.prava-accordion__content{padding-inline:calc(var(--spacing,.25rem) * 2);padding-bottom:calc(var(--spacing,.25rem) * 4);color:var(--prava-color-text-muted)}@media(prefers-reduced-motion:reduce){.prava-accordion__trigger,.prava-accordion__chevron,.prava-accordion__panel{transition:none}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-border-style:solid}}}@layer prava.components{.prava-alert{box-sizing:border-box;align-items:flex-start;column-gap:calc(var(--spacing,.25rem) * 3);row-gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--prava-radius-control);min-width:0;max-width:100%;padding-inline:calc(var(--spacing,.25rem) * 4);padding-block:calc(var(--spacing,.25rem) * 3);font-size:var(--prava-font-size-3);line-height:var(--prava-line-height-normal);animation:prava-alert-in var(--prava-duration-normal) var(--prava-ease-standard);flex-wrap:wrap;display:flex;position:relative}@keyframes prava-alert-in{0%{opacity:0}}.prava-alert[data-tone=neutral]{background-color:var(--prava-color-surface-sunken);color:var(--prava-color-text)}.prava-alert[data-tone=info]{background-color:var(--prava-color-info);color:var(--prava-color-on-info)}.prava-alert[data-tone=success]{background-color:var(--prava-color-success);color:var(--prava-color-on-success)}.prava-alert[data-tone=warning]{background-color:var(--prava-color-warning);color:var(--prava-color-on-warning)}.prava-alert[data-tone=danger]{background-color:var(--prava-color-danger-container);color:var(--prava-color-on-danger-container)}.prava-alert__icon{height:calc(var(--spacing,.25rem) * 5);flex:none;align-items:center;display:flex}.prava-alert__icon svg,.prava-alert__dismiss svg{width:calc(var(--spacing,.25rem) * 4);height:calc(var(--spacing,.25rem) * 4);fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.prava-alert[data-dismissible]{padding-inline-end:calc(var(--spacing,.25rem) * 11)}.prava-alert__body{gap:calc(var(--spacing,.25rem) * .5);flex:11rem;min-width:0;display:grid}.prava-alert__title{--tw-font-weight:var(--prava-font-weight-semibold);font-weight:var(--prava-font-weight-semibold)}.prava-alert__action{align-items:center;gap:calc(var(--spacing,.25rem) * 2);flex-wrap:wrap;margin-inline-start:auto;display:flex}.prava-alert__dismiss{inset-inline-end:calc(var(--spacing,.25rem) * 2);top:calc(var(--spacing,.25rem) * 2);width:calc(var(--spacing,.25rem) * 7);height:calc(var(--spacing,.25rem) * 7);cursor:pointer;border-radius:var(--prava-radius-sm);border-style:var(--tw-border-style);color:inherit;outline:var(--prava-stroke) solid transparent;transition:outline-color var(--prava-duration-fast) var(--prava-ease-standard);background-color:#0000;border-width:0;place-items:center;padding:0;display:grid;position:absolute}.prava-alert__dismiss:before{content:"";border-radius:inherit;opacity:0;transition:opacity var(--prava-duration-fast) var(--prava-ease-standard);background:currentColor;position:absolute;inset:0}.prava-alert__dismiss:focus-visible{outline-color:var(--prava-color-focus)}@media(hover:hover){.prava-alert__dismiss:hover:before{opacity:.12}}@media(pointer:coarse){.prava-alert[data-dismissible]{padding-inline-end:calc(var(--spacing,.25rem) * 13)}.prava-alert__dismiss{inset-inline-end:calc(var(--spacing,.25rem) * .5);top:calc(var(--spacing,.25rem) * .5);width:calc(var(--spacing,.25rem) * 11);height:calc(var(--spacing,.25rem) * 11)}}@media(prefers-reduced-motion:reduce){.prava-alert__dismiss,.prava-alert__dismiss:before{transition:none}}}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial}}}@layer prava.components{.prava-avatar{background-color:var(--prava-color-surface-raised);vertical-align:middle;--tw-font-weight:var(--prava-font-weight-semibold);font-weight:var(--prava-font-weight-semibold);color:var(--prava-color-text);-webkit-user-select:none;user-select:none;box-shadow:inset 0 0 0 1px var(--prava-color-border);border-radius:2147483647px;flex:none;justify-content:center;align-items:center;line-height:1;display:inline-flex;overflow:hidden}.prava-avatar[data-size=sm]{width:calc(var(--spacing,.25rem) * 8);height:calc(var(--spacing,.25rem) * 8);font-size:var(--prava-font-size-1)}.prava-avatar[data-size=md]{width:calc(var(--spacing,.25rem) * 10);height:calc(var(--spacing,.25rem) * 10);font-size:var(--prava-font-size-3)}.prava-avatar[data-size=lg]{width:calc(var(--spacing,.25rem) * 12);height:calc(var(--spacing,.25rem) * 12);font-size:var(--prava-font-size-4)}.prava-avatar img{object-fit:cover;width:100%;height:100%}.prava-avatar[data-tone]{box-shadow:none}.prava-avatar[data-tone=primary]{background-color:var(--prava-color-primary-container);color:var(--prava-color-on-primary-container)}.prava-avatar[data-tone=success]{background-color:var(--prava-color-success);color:var(--prava-color-on-success)}.prava-avatar[data-tone=warning]{background-color:var(--prava-color-warning);color:var(--prava-color-on-warning)}.prava-avatar[data-tone=info]{background-color:var(--prava-color-info);color:var(--prava-color-on-info)}.prava-avatar[data-tone=danger]{background-color:var(--prava-color-danger-container);color:var(--prava-color-on-danger-container)}}@property --tw-font-weight{syntax:"*";inherits:false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial}}}@layer prava.components{.prava-badge{vertical-align:middle;--prava-badge-flip:1;max-width:100%;display:inline-flex;position:relative}.prava-badge:dir(rtl){--prava-badge-flip:-1}.prava-badge__target{max-width:100%;display:inline-flex}.prava-badge__indicator{pointer-events:none;justify-content:center;align-items:center;gap:var(--spacing,.25rem);max-width:100%;font-size:var(--prava-font-size-1);--tw-font-weight:var(--prava-font-weight-semibold);font-weight:var(--prava-font-weight-semibold);white-space:nowrap;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal, ) var(--tw-slashed-zero, ) var(--tw-numeric-figure, ) var(--tw-numeric-spacing, ) var(--tw-numeric-fraction, );border-radius:2147483647px;line-height:1;display:inline-flex}.prava-badge:not([data-standalone]) .prava-badge__indicator{z-index:10;box-shadow:0 0 0 var(--prava-stroke) var(--prava-color-surface);position:absolute}.prava-badge__indicator[data-placement^=top]{top:0}.prava-badge__indicator[data-placement^=bottom]{bottom:0}.prava-badge__indicator[data-placement$=end]{translate:calc(50% * var(--prava-badge-flip)) 0;inset-inline-end:0}.prava-badge__indicator[data-placement$=start]{translate:calc(-50% * var(--prava-badge-flip)) 0;inset-inline-start:0}.prava-badge__indicator[data-placement^=top]{margin-block-start:-.5rem}.prava-badge__indicator[data-placement^=bottom]{margin-block-end:-.5rem}.prava-badge__indicator[data-size=sm]{height:calc(var(--spacing,.25rem) * 4.5);min-width:calc(var(--spacing,.25rem) * 4.5);padding-inline:calc(var(--spacing,.25rem) * 1.5)}.prava-badge__indicator[data-size=md]{height:calc(var(--spacing,.25rem) * 5.5);min-width:calc(var(--spacing,.25rem) * 5.5);padding-inline:calc(var(--spacing,.25rem) * 2);font-size:var(--prava-font-size-2)}.prava-badge[data-standalone] .prava-badge__indicator[data-size=sm]{height:calc(var(--spacing,.25rem) * 5);padding-inline:calc(var(--spacing,.25rem) * 2)}.prava-badge[data-standalone] .prava-badge__indicator[data-size=md]{height:calc(var(--spacing,.25rem) * 6);padding-inline:calc(var(--spacing,.25rem) * 2.5)}.prava-badge__indicator[data-tone=neutral]{background-color:var(--prava-color-surface-raised);color:var(--prava-color-text)}.prava-badge__indicator[data-tone=primary]{background-color:var(--prava-color-primary-container);color:var(--prava-color-on-primary-container)}.prava-badge__indicator[data-tone=success]{background-color:var(--prava-color-success);color:var(--prava-color-on-success)}.prava-badge__indicator[data-tone=warning]{background-color:var(--prava-color-warning);color:var(--prava-color-on-warning)}.prava-badge__indicator[data-tone=danger]{background-color:var(--prava-color-danger-container);color:var(--prava-color-on-danger-container)}.prava-badge__indicator[data-tone=info]{background-color:var(--prava-color-info);color:var(--prava-color-on-info)}.prava-badge:not([data-standalone]) .prava-badge__indicator[data-tone=primary]{background-color:var(--prava-color-primary);color:var(--prava-color-on-primary)}.prava-badge:not([data-standalone]) .prava-badge__indicator[data-tone=danger]{background-color:var(--prava-color-danger);color:var(--prava-color-on-danger)}}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer prava.components{.prava-button{box-sizing:border-box;cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--prava-radius-control);border-style:var(--tw-border-style);text-align:center;white-space:nowrap;-webkit-user-select:none;user-select:none;max-width:100%;font:inherit;font-weight:var(--prava-font-weight-semibold);line-height:var(--prava-line-height-tight);outline:var(--prava-stroke) solid transparent;outline-offset:0;transition-property:background-color,border-color,color,box-shadow,outline-color,outline-offset,scale;transition-duration:var(--prava-duration-fast);transition-timing-function:var(--prava-ease-standard);-webkit-tap-highlight-color:transparent;border-width:1px;border-color:#0000;flex-shrink:0;text-decoration-line:none;display:inline-flex;position:relative}.prava-button:focus-visible{outline-offset:2px;outline-color:var(--prava-color-focus)}.prava-button[data-full-width]{width:100%;display:flex}.prava-button[data-variant=primary]{background-color:var(--prava-color-primary);color:var(--prava-color-on-primary);--tw-shadow:var(--prava-shadow-control-filled);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.prava-button:not(:disabled,[aria-disabled=true])[data-variant=primary]:hover{background-color:var(--prava-color-primary-hover)}}.prava-button:not(:disabled,[aria-disabled=true])[data-variant=primary]:active{background-color:var(--prava-color-primary-active)}.prava-button[data-variant=secondary]{border-color:var(--prava-color-border);background-color:var(--prava-color-surface);color:var(--prava-color-text);--tw-shadow:var(--prava-shadow-control);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.prava-button:not(:disabled,[aria-disabled=true])[data-variant=secondary]:hover{background-color:var(--prava-color-surface-hover);--tw-shadow:var(--prava-shadow-control-hover);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.prava-button[data-variant=outline]{border-color:var(--prava-color-border);color:var(--prava-color-text);background-color:#0000}.prava-button[data-variant=ghost]{color:var(--prava-color-text);background-color:#0000}@media(hover:hover){.prava-button:not(:disabled,[aria-disabled=true])[data-variant=outline]:hover,.prava-button:not(:disabled,[aria-disabled=true])[data-variant=ghost]:hover{background-color:var(--prava-color-surface-hover)}}.prava-button[data-variant=destructive]{background-color:var(--prava-color-danger);color:var(--prava-color-on-danger);--tw-shadow:var(--prava-shadow-control-filled);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.prava-button:not(:disabled,[aria-disabled=true])[data-variant=destructive]:hover{background-color:var(--prava-color-danger-hover)}}.prava-button:not(:disabled,[aria-disabled=true]):active{--tw-scale-x:98%;--tw-scale-y:98%;--tw-scale-z:98%;scale:var(--tw-scale-x) var(--tw-scale-y);--tw-shadow:var(--prava-shadow-pressed);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);transition-timing-function:var(--prava-ease-press)}.prava-button[data-size=sm]{height:var(--prava-control-height-sm);gap:calc(var(--spacing,.25rem) * 1.5);padding-inline:calc(var(--spacing,.25rem) * 3);font-size:var(--prava-font-size-2)}.prava-button[data-size=md]{height:var(--prava-control-height-md);padding-inline:calc(var(--spacing,.25rem) * 4);font-size:var(--prava-font-size-3)}.prava-button[data-size=lg]{height:var(--prava-control-height-lg);padding-inline:calc(var(--spacing,.25rem) * 5);font-size:var(--prava-font-size-4)}.prava-button[data-type=icon]{aspect-ratio:1;padding-inline:0}.prava-button__content,.prava-button__icon{justify-content:center;align-items:center;gap:inherit;display:inline-flex}.prava-button__icon>svg{flex-shrink:0;width:1.15em;height:1.15em}.prava-button[data-loading]{cursor:progress}.prava-button[data-loading] .prava-button__content{visibility:hidden}.prava-button__loader{place-items:center;display:grid;position:absolute;inset:0}.prava-button:disabled,.prava-button[aria-disabled=true]:not([data-loading]){cursor:not-allowed;opacity:.5;--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.prava-button[data-motion=none],.prava-button[data-motion=none] .prava-spinner *{transition:none;animation:none;scale:none}@media(prefers-reduced-motion:reduce){.prava-button{transition:none}.prava-button:active{scale:none}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial}}}@layer prava.components{.prava-card{border-radius:var(--prava-radius-card);border-style:var(--tw-border-style);border-width:1px;border-color:var(--prava-color-border);background-color:var(--prava-color-surface);min-width:0;max-width:100%;color:var(--prava-color-text);box-shadow:var(--prava-shadow-control);overflow:hidden}.prava-card__header,.prava-card__content{min-width:0;padding-inline:calc(var(--spacing,.25rem) * 5);padding-block:calc(var(--spacing,.25rem) * 4)}.prava-card__header{gap:var(--spacing,.25rem);padding-bottom:0;display:grid}.prava-card__header+.prava-card__content{padding-top:calc(var(--spacing,.25rem) * 4)}.prava-card__header :is(h1,h2,h3,h4,h5,h6){font-size:var(--prava-font-size-5);--tw-font-weight:var(--prava-font-weight-semibold);font-weight:var(--prava-font-weight-semibold);line-height:var(--prava-line-height-tight);text-wrap:balance;margin:0}.prava-card__header p{font-size:var(--prava-font-size-3);color:var(--prava-color-text-muted);line-height:var(--prava-line-height-normal);margin:0}.prava-card__footer{justify-content:flex-end;align-items:center;gap:calc(var(--spacing,.25rem) * 2);border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--prava-color-border);background-color:var(--prava-color-canvas);min-width:0;padding-inline:calc(var(--spacing,.25rem) * 5);padding-block:calc(var(--spacing,.25rem) * 3);flex-wrap:wrap;display:flex}@media(max-width:30rem){.prava-card__header,.prava-card__content,.prava-card__footer{padding-inline:calc(var(--spacing,.25rem) * 4)}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer prava.components{.prava-checkbox .prava-choice__indicator{border-radius:var(--prava-radius-sm)}.prava-checkbox svg{width:calc(var(--spacing,.25rem) * 3.5);height:calc(var(--spacing,.25rem) * 3.5);fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.prava-choice__check{stroke-dasharray:14;stroke-dashoffset:14px;transition:stroke-dashoffset var(--prava-duration-normal) var(--prava-ease-standard)}.prava-choice__dash{opacity:0}.prava-choice__input:checked:not(:indeterminate)+.prava-choice__indicator .prava-choice__check{stroke-dashoffset:0}.prava-choice__input:indeterminate+.prava-choice__indicator .prava-choice__dash{opacity:1}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer prava.components{.prava-container{--prava-container-max:72rem;box-sizing:border-box;width:100%;min-width:0;max-inline-size:var(--prava-container-max);margin-inline:auto;padding-inline:clamp(1rem,4vw,2rem)}.prava-container[data-size=sm]{--prava-container-max:40rem}.prava-container[data-size=md]{--prava-container-max:56rem}.prava-container[data-size=xl]{--prava-container-max:88rem}.prava-container[data-size=fluid]{--prava-container-max:100%}}
|