@rojaostudio/ds 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordion.js +43 -37
- package/dist/components/alert.js +35 -28
- package/dist/components/avatar.js +41 -34
- package/dist/components/badge.js +21 -14
- package/dist/components/blocker-card.js +11 -2
- package/dist/components/bottom-sheet.js +60 -53
- package/dist/components/breadcrumb.js +32 -22
- package/dist/components/button.js +18 -11
- package/dist/components/card.js +24 -9
- package/dist/components/chat-bubble.js +6 -5
- package/dist/components/checkbox.js +61 -48
- package/dist/components/chip-input.js +98 -81
- package/dist/components/chips.js +36 -29
- package/dist/components/choice-card.js +48 -42
- package/dist/components/choice-carousel.js +79 -74
- package/dist/components/choice-preview-card.js +17 -6
- package/dist/components/color-input.js +41 -35
- package/dist/components/combobox.js +97 -75
- package/dist/components/context-menu.js +17 -13
- package/dist/components/copilot-hint.js +40 -31
- package/dist/components/copy-field.js +8 -5
- package/dist/components/currency-input.js +40 -32
- package/dist/components/danger-zone.js +19 -9
- package/dist/components/data-table-header.js +185 -135
- package/dist/components/date-picker.js +114 -95
- package/dist/components/divider.js +11 -8
- package/dist/components/drawer.js +40 -28
- package/dist/components/dropzone.js +23 -20
- package/dist/components/empty-state.js +26 -23
- package/dist/components/fab.js +38 -26
- package/dist/components/filter-chip.js +20 -16
- package/dist/components/floating-stepper.js +42 -32
- package/dist/components/form-card-header.js +9 -1
- package/dist/components/icon-button.js +19 -13
- package/dist/components/image-crop-modal.js +69 -48
- package/dist/components/image-upload.js +172 -128
- package/dist/components/input.js +90 -62
- package/dist/components/insight-card.js +12 -1
- package/dist/components/label.js +12 -7
- package/dist/components/media-tile.js +11 -8
- package/dist/components/menu.js +28 -25
- package/dist/components/modal.js +43 -28
- package/dist/components/notice.js +34 -16
- package/dist/components/option-tile.js +55 -49
- package/dist/components/page-shell.js +13 -6
- package/dist/components/page-skeleton.js +32 -2
- package/dist/components/page-tabs.js +39 -26
- package/dist/components/pagination.js +38 -33
- package/dist/components/paywall-banner.js +19 -3
- package/dist/components/paywall.js +18 -8
- package/dist/components/phone-frame.js +5 -4
- package/dist/components/phone-input.js +50 -31
- package/dist/components/pix-icon.js +11 -6
- package/dist/components/popover.js +27 -23
- package/dist/components/pricing-card.js +16 -1
- package/dist/components/qr-display.js +16 -11
- package/dist/components/radio.js +73 -56
- package/dist/components/row-actions.js +61 -53
- package/dist/components/saving-bar-context.js +35 -29
- package/dist/components/saving-bar.js +36 -33
- package/dist/components/search.js +49 -44
- package/dist/components/section-card.js +43 -35
- package/dist/components/section-header.js +11 -1
- package/dist/components/select.js +83 -62
- package/dist/components/selectable-card.js +10 -3
- package/dist/components/setting-row.js +11 -1
- package/dist/components/settings-list.js +9 -5
- package/dist/components/skeleton.js +6 -5
- package/dist/components/slider.js +52 -38
- package/dist/components/spinner.js +18 -12
- package/dist/components/step-progress.js +11 -10
- package/dist/components/summary-bar.js +33 -28
- package/dist/components/table.js +20 -15
- package/dist/components/textarea.js +40 -24
- package/dist/components/themed.d.ts +1 -1
- package/dist/components/themed.js +2 -1
- package/dist/components/time-picker.js +117 -97
- package/dist/components/toaster.js +80 -74
- package/dist/components/toggle-card-compact.js +79 -71
- package/dist/components/toggle-card.js +61 -53
- package/dist/components/toggle-group.js +35 -29
- package/dist/components/toggle.js +46 -36
- package/dist/components/tooltip.js +30 -25
- package/dist/components/typing-indicator.js +10 -7
- package/dist/targets/native/components/accordion.js +31 -25
- package/dist/targets/native/components/alert.js +22 -16
- package/dist/targets/native/components/avatar.js +36 -29
- package/dist/targets/native/components/badge.js +4 -3
- package/dist/targets/native/components/button.js +11 -4
- package/dist/targets/native/components/card.js +2 -1
- package/dist/targets/native/components/checkbox.js +18 -15
- package/dist/targets/native/components/chips.js +19 -16
- package/dist/targets/native/components/choice-card.js +29 -23
- package/dist/targets/native/components/context-menu.js +13 -9
- package/dist/targets/native/components/currency-input.js +28 -25
- package/dist/targets/native/components/danger-zone.js +10 -4
- package/dist/targets/native/components/date-picker.js +86 -70
- package/dist/targets/native/components/divider.js +3 -2
- package/dist/targets/native/components/empty-state.js +6 -1
- package/dist/targets/native/components/fab.js +32 -26
- package/dist/targets/native/components/filter-chip.js +9 -8
- package/dist/targets/native/components/form-field.js +20 -10
- package/dist/targets/native/components/form-screen.js +50 -45
- package/dist/targets/native/components/google-icon.js +31 -25
- package/dist/targets/native/components/icon-button.js +6 -4
- package/dist/targets/native/components/icon.js +2 -1
- package/dist/targets/native/components/image-upload.js +59 -50
- package/dist/targets/native/components/input.js +41 -34
- package/dist/targets/native/components/list-item.js +29 -23
- package/dist/targets/native/components/menu.js +12 -10
- package/dist/targets/native/components/modal.js +41 -32
- package/dist/targets/native/components/paywall-banner.js +13 -4
- package/dist/targets/native/components/paywall.js +11 -1
- package/dist/targets/native/components/radio.js +19 -16
- package/dist/targets/native/components/search.js +41 -38
- package/dist/targets/native/components/select.js +71 -63
- package/dist/targets/native/components/sheet.js +36 -30
- package/dist/targets/native/components/skeleton.js +6 -5
- package/dist/targets/native/components/slider.js +51 -43
- package/dist/targets/native/components/spinner.js +2 -1
- package/dist/targets/native/components/stepper.js +14 -9
- package/dist/targets/native/components/switch.js +15 -14
- package/dist/targets/native/components/text.js +2 -1
- package/dist/targets/native/components/textarea.js +2 -1
- package/dist/targets/native/components/theme.js +2 -1
- package/dist/targets/native/components/toaster.js +24 -21
- package/dist/targets/native/index.d.ts +1 -1
- package/dist/targets/native/index.js +1 -3
- package/package.json +190 -194
- package/styles/base.css +3 -3
- package/brand/rojao-black-on-white.png +0 -0
- package/brand/rojao-black.png +0 -0
- package/brand/rojao-white-on-black.png +0 -0
- package/brand/rojao-white.png +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import "../chunk-ORMEWXMH.js";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
function ToggleCard({
|
|
4
5
|
label,
|
|
5
6
|
description,
|
|
@@ -8,67 +9,74 @@ function ToggleCard({
|
|
|
8
9
|
name,
|
|
9
10
|
children
|
|
10
11
|
}) {
|
|
11
|
-
return /* @__PURE__ */
|
|
12
|
+
return /* @__PURE__ */ jsxs(
|
|
12
13
|
"div",
|
|
13
14
|
{
|
|
14
15
|
className: [
|
|
15
16
|
"rounded-(--radius-card) overflow-hidden transition-colors border",
|
|
16
17
|
checked ? "[border-color:var(--section-card-border-active)]" : "[border-color:var(--section-card-border)]"
|
|
17
|
-
].join(" ")
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
{
|
|
23
|
-
type: "button",
|
|
24
|
-
role: "switch",
|
|
25
|
-
"aria-checked": checked,
|
|
26
|
-
onClick: () => onCheckedChange(!checked),
|
|
27
|
-
className: [
|
|
28
|
-
"w-full flex items-center justify-between gap-3 px-4 py-3 text-left transition-colors",
|
|
29
|
-
checked ? "[background:var(--section-card-header-bg-active)]" : "hover:[background:var(--section-card-header-bg-hover)]"
|
|
30
|
-
].join(" ")
|
|
31
|
-
},
|
|
32
|
-
/* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-0.5 min-w-0 flex-1" }, /* @__PURE__ */ React.createElement(
|
|
33
|
-
"span",
|
|
34
|
-
{
|
|
35
|
-
className: [
|
|
36
|
-
"text-caption font-semibold uppercase tracking-wide",
|
|
37
|
-
checked ? "[color:var(--section-card-label-active)]" : "[color:var(--section-card-label)]"
|
|
38
|
-
].join(" ")
|
|
39
|
-
},
|
|
40
|
-
label
|
|
41
|
-
), description && /* @__PURE__ */ React.createElement(
|
|
42
|
-
"span",
|
|
43
|
-
{
|
|
44
|
-
className: [
|
|
45
|
-
"text-caption leading-snug",
|
|
46
|
-
checked ? "[color:var(--section-card-badge-active)]" : "[color:var(--section-card-badge)]"
|
|
47
|
-
].join(" ")
|
|
48
|
-
},
|
|
49
|
-
description
|
|
50
|
-
)),
|
|
51
|
-
/* @__PURE__ */ React.createElement(
|
|
52
|
-
"span",
|
|
53
|
-
{
|
|
54
|
-
"aria-hidden": true,
|
|
55
|
-
className: [
|
|
56
|
-
"relative inline-flex shrink-0 h-5 w-9 rounded-full transition-colors",
|
|
57
|
-
checked ? "bg-(--surface-default)/30" : "bg-(--surface-raised) border border-stroke-default"
|
|
58
|
-
].join(" ")
|
|
59
|
-
},
|
|
60
|
-
/* @__PURE__ */ React.createElement(
|
|
61
|
-
"span",
|
|
18
|
+
].join(" "),
|
|
19
|
+
children: [
|
|
20
|
+
name && /* @__PURE__ */ jsx("input", { type: "hidden", name, value: checked ? "on" : "" }),
|
|
21
|
+
/* @__PURE__ */ jsxs(
|
|
22
|
+
"button",
|
|
62
23
|
{
|
|
24
|
+
type: "button",
|
|
25
|
+
role: "switch",
|
|
26
|
+
"aria-checked": checked,
|
|
27
|
+
onClick: () => onCheckedChange(!checked),
|
|
63
28
|
className: [
|
|
64
|
-
"
|
|
65
|
-
checked ? "
|
|
66
|
-
].join(" ")
|
|
29
|
+
"w-full flex items-center justify-between gap-3 px-4 py-3 text-left transition-colors",
|
|
30
|
+
checked ? "[background:var(--section-card-header-bg-active)]" : "hover:[background:var(--section-card-header-bg-hover)]"
|
|
31
|
+
].join(" "),
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-0.5 min-w-0 flex-1", children: [
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
|
+
"span",
|
|
36
|
+
{
|
|
37
|
+
className: [
|
|
38
|
+
"text-caption font-semibold uppercase tracking-wide",
|
|
39
|
+
checked ? "[color:var(--section-card-label-active)]" : "[color:var(--section-card-label)]"
|
|
40
|
+
].join(" "),
|
|
41
|
+
children: label
|
|
42
|
+
}
|
|
43
|
+
),
|
|
44
|
+
description && /* @__PURE__ */ jsx(
|
|
45
|
+
"span",
|
|
46
|
+
{
|
|
47
|
+
className: [
|
|
48
|
+
"text-caption leading-snug",
|
|
49
|
+
checked ? "[color:var(--section-card-badge-active)]" : "[color:var(--section-card-badge)]"
|
|
50
|
+
].join(" "),
|
|
51
|
+
children: description
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
] }),
|
|
55
|
+
/* @__PURE__ */ jsx(
|
|
56
|
+
"span",
|
|
57
|
+
{
|
|
58
|
+
"aria-hidden": true,
|
|
59
|
+
className: [
|
|
60
|
+
"relative inline-flex shrink-0 h-5 w-9 rounded-full transition-colors",
|
|
61
|
+
checked ? "bg-(--surface-default)/30" : "bg-(--surface-raised) border border-stroke-default"
|
|
62
|
+
].join(" "),
|
|
63
|
+
children: /* @__PURE__ */ jsx(
|
|
64
|
+
"span",
|
|
65
|
+
{
|
|
66
|
+
className: [
|
|
67
|
+
"absolute top-0.5 inline-block h-4 w-4 rounded-full bg-(--surface-default) shadow-sm transition-transform",
|
|
68
|
+
checked ? "translate-x-[18px]" : "translate-x-0.5"
|
|
69
|
+
].join(" ")
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
]
|
|
67
75
|
}
|
|
68
|
-
)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
76
|
+
),
|
|
77
|
+
checked && children && /* @__PURE__ */ jsx("div", { className: "px-4 pb-4 pt-4 space-y-4 [border-top:1px_solid_var(--section-card-divider)] [background:var(--surface-default)]", children })
|
|
78
|
+
]
|
|
79
|
+
}
|
|
72
80
|
);
|
|
73
81
|
}
|
|
74
82
|
export {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import "../chunk-ORMEWXMH.js";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
import { useId } from "react";
|
|
4
5
|
const SIZE_CLASS = {
|
|
5
6
|
sm: "h-control-sm text-caption px-2.5 gap-1",
|
|
@@ -34,7 +35,7 @@ function ToggleGroup(props) {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
|
-
const group = /* @__PURE__ */
|
|
38
|
+
const group = /* @__PURE__ */ jsx(
|
|
38
39
|
"div",
|
|
39
40
|
{
|
|
40
41
|
id: groupId,
|
|
@@ -44,36 +45,41 @@ function ToggleGroup(props) {
|
|
|
44
45
|
stretch ? "flex w-full" : "inline-flex",
|
|
45
46
|
"rounded-(--radius-control) border border-stroke-default bg-surface-default p-0.5 gap-0.5",
|
|
46
47
|
label ? "" : className
|
|
47
|
-
].join(" ")
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
48
|
+
].join(" "),
|
|
49
|
+
children: options.map((opt) => {
|
|
50
|
+
const active = isActive(opt);
|
|
51
|
+
return /* @__PURE__ */ jsxs(
|
|
52
|
+
"button",
|
|
53
|
+
{
|
|
54
|
+
type: "button",
|
|
55
|
+
role: isMulti ? "switch" : "radio",
|
|
56
|
+
"aria-checked": active,
|
|
57
|
+
disabled: opt.disabled,
|
|
58
|
+
style: opt.style,
|
|
59
|
+
onClick: () => handleClick(opt),
|
|
60
|
+
className: [
|
|
61
|
+
"inline-flex items-center justify-center rounded-(--radius-control) font-medium transition-colors",
|
|
62
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-stroke-focus focus-visible:z-10",
|
|
63
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
64
|
+
stretch ? "flex-1" : "",
|
|
65
|
+
SIZE_CLASS[size],
|
|
66
|
+
active ? selectedTone === "neutral" ? "bg-surface-invert text-fg-inverse" : "bg-brand-primary text-brand-on-primary" : "text-fg-secondary hover:text-fg-primary hover:bg-surface-raised"
|
|
67
|
+
].join(" "),
|
|
68
|
+
children: [
|
|
69
|
+
opt.icon && /* @__PURE__ */ jsx("span", { className: "[&_svg]:size-4 shrink-0", children: opt.icon }),
|
|
70
|
+
opt.label && /* @__PURE__ */ jsx("span", { children: opt.label })
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
opt.value
|
|
74
|
+
);
|
|
75
|
+
})
|
|
76
|
+
}
|
|
74
77
|
);
|
|
75
78
|
if (!label) return group;
|
|
76
|
-
return /* @__PURE__ */
|
|
79
|
+
return /* @__PURE__ */ jsxs("div", { className: ["flex flex-col gap-1.5", className].join(" "), children: [
|
|
80
|
+
/* @__PURE__ */ jsx("label", { htmlFor: groupId, className: "text-label font-medium text-fg-primary", children: label }),
|
|
81
|
+
group
|
|
82
|
+
] });
|
|
77
83
|
}
|
|
78
84
|
export {
|
|
79
85
|
ToggleGroup
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
__objRest,
|
|
4
4
|
__spreadValues
|
|
5
5
|
} from "../chunk-ORMEWXMH.js";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
7
|
import { forwardRef, useId } from "react";
|
|
7
8
|
const SIZE = {
|
|
8
9
|
sm: { track: "h-4 w-7", thumb: "size-3 peer-checked:translate-x-3.5", text: "text-caption" },
|
|
@@ -14,37 +15,44 @@ const Toggle = forwardRef(function Toggle2(_a, ref) {
|
|
|
14
15
|
const generatedId = useId();
|
|
15
16
|
const inputId = id != null ? id : generatedId;
|
|
16
17
|
const sz = SIZE[size];
|
|
17
|
-
const labelEl = (label || description) && /* @__PURE__ */
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
18
|
+
const labelEl = (label || description) && /* @__PURE__ */ jsxs("span", { className: "flex flex-col gap-0.5 select-none", children: [
|
|
19
|
+
label && /* @__PURE__ */ jsx("span", { className: [sz.text, "text-fg-primary leading-snug"].join(" "), children: label }),
|
|
20
|
+
description && /* @__PURE__ */ jsx("span", { className: "text-caption text-fg-muted leading-snug", children: description })
|
|
21
|
+
] });
|
|
22
|
+
const switchEl = /* @__PURE__ */ jsxs("span", { className: ["relative inline-flex shrink-0 items-center", sz.track].join(" "), children: [
|
|
23
|
+
/* @__PURE__ */ jsx(
|
|
24
|
+
"input",
|
|
25
|
+
__spreadValues({
|
|
26
|
+
ref,
|
|
27
|
+
type: "checkbox",
|
|
28
|
+
role: "switch",
|
|
29
|
+
id: inputId,
|
|
30
|
+
className: "peer sr-only"
|
|
31
|
+
}, props)
|
|
32
|
+
),
|
|
33
|
+
/* @__PURE__ */ jsx(
|
|
34
|
+
"span",
|
|
35
|
+
{
|
|
36
|
+
className: [
|
|
37
|
+
"absolute inset-0 rounded-full transition-colors",
|
|
38
|
+
"bg-surface-raised border border-stroke-control",
|
|
39
|
+
"peer-checked:bg-(--toggle-track-active) peer-checked:border-transparent",
|
|
40
|
+
"peer-focus-visible:ring-2 peer-focus-visible:ring-stroke-focus/30",
|
|
41
|
+
"peer-disabled:cursor-not-allowed"
|
|
42
|
+
].join(" ")
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
/* @__PURE__ */ jsx(
|
|
46
|
+
"span",
|
|
47
|
+
{
|
|
48
|
+
className: [
|
|
49
|
+
"relative rounded-full bg-surface-default shadow-sm transition-transform translate-x-0.5",
|
|
50
|
+
sz.thumb
|
|
51
|
+
].join(" ")
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
] });
|
|
55
|
+
return /* @__PURE__ */ jsxs(
|
|
48
56
|
"label",
|
|
49
57
|
{
|
|
50
58
|
htmlFor: inputId,
|
|
@@ -52,11 +60,13 @@ const Toggle = forwardRef(function Toggle2(_a, ref) {
|
|
|
52
60
|
"inline-flex items-start gap-2.5 cursor-pointer",
|
|
53
61
|
"has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed",
|
|
54
62
|
className
|
|
55
|
-
].filter(Boolean).join(" ")
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
63
|
+
].filter(Boolean).join(" "),
|
|
64
|
+
children: [
|
|
65
|
+
labelPosition === "left" && labelEl,
|
|
66
|
+
/* @__PURE__ */ jsx("span", { className: "flex items-center pt-0.5", children: switchEl }),
|
|
67
|
+
labelPosition === "right" && labelEl
|
|
68
|
+
]
|
|
69
|
+
}
|
|
60
70
|
);
|
|
61
71
|
});
|
|
62
72
|
export {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import "../chunk-ORMEWXMH.js";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
import { useState, useRef, useEffect, useId } from "react";
|
|
4
5
|
const GAP = 8;
|
|
5
6
|
function getFixedPos(rect, side) {
|
|
@@ -49,7 +50,7 @@ function Tooltip({ content, children, side = "top", delay = 300, className, wrap
|
|
|
49
50
|
useEffect(() => () => {
|
|
50
51
|
if (timer.current) clearTimeout(timer.current);
|
|
51
52
|
}, []);
|
|
52
|
-
return /* @__PURE__ */
|
|
53
|
+
return /* @__PURE__ */ jsxs(
|
|
53
54
|
"span",
|
|
54
55
|
{
|
|
55
56
|
ref,
|
|
@@ -58,30 +59,34 @@ function Tooltip({ content, children, side = "top", delay = 300, className, wrap
|
|
|
58
59
|
onMouseLeave: hide,
|
|
59
60
|
onFocus: show,
|
|
60
61
|
onBlur: hide,
|
|
61
|
-
"aria-describedby": pos ? id : void 0
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
62
|
+
"aria-describedby": pos ? id : void 0,
|
|
63
|
+
children: [
|
|
64
|
+
children,
|
|
65
|
+
pos && /* @__PURE__ */ jsxs(
|
|
66
|
+
"span",
|
|
67
|
+
{
|
|
68
|
+
id,
|
|
69
|
+
role: "tooltip",
|
|
70
|
+
style: { position: "fixed", top: pos.top, left: pos.left, transform: pos.transform },
|
|
71
|
+
className: `z-[9999] px-2.5 py-1.5 bg-[var(--tooltip-bg)] text-[var(--tooltip-text)] text-caption font-medium rounded-(--radius-tooltip) whitespace-nowrap pointer-events-none shadow-md${className ? ` ${className}` : ""}`,
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ jsx(
|
|
74
|
+
"span",
|
|
75
|
+
{
|
|
76
|
+
"aria-hidden": "true",
|
|
77
|
+
className: [
|
|
78
|
+
"absolute border-[5px]",
|
|
79
|
+
ARROW_CLASSES[side]
|
|
80
|
+
].join(" "),
|
|
81
|
+
style: { width: 0, height: 0 }
|
|
82
|
+
}
|
|
83
|
+
),
|
|
84
|
+
content
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
]
|
|
89
|
+
}
|
|
85
90
|
);
|
|
86
91
|
}
|
|
87
92
|
export {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import "../chunk-ORMEWXMH.js";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
import { ChatBubble } from "./chat-bubble.js";
|
|
4
5
|
function TypingIndicator({ ariaLabel = "Digitando" }) {
|
|
5
6
|
const dotStyle = (delay) => ({
|
|
@@ -10,17 +11,19 @@ function TypingIndicator({ ariaLabel = "Digitando" }) {
|
|
|
10
11
|
animation: "rojao-typing-pulse 1400ms infinite",
|
|
11
12
|
animationDelay: delay
|
|
12
13
|
});
|
|
13
|
-
return /* @__PURE__ */
|
|
14
|
+
return /* @__PURE__ */ jsx(ChatBubble, { variant: "bot", ariaLabel, children: /* @__PURE__ */ jsxs(
|
|
14
15
|
"span",
|
|
15
16
|
{
|
|
16
17
|
className: "inline-flex items-center",
|
|
17
18
|
style: { gap: "var(--typing-dot-gap)" },
|
|
18
|
-
"aria-live": "polite"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
"aria-live": "polite",
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ jsx("span", { style: dotStyle("0ms") }),
|
|
22
|
+
/* @__PURE__ */ jsx("span", { style: dotStyle("200ms") }),
|
|
23
|
+
/* @__PURE__ */ jsx("span", { style: dotStyle("400ms") })
|
|
24
|
+
]
|
|
25
|
+
}
|
|
26
|
+
) });
|
|
24
27
|
}
|
|
25
28
|
export {
|
|
26
29
|
TypingIndicator
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "../../../chunk-ORMEWXMH.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
3
|
import { ChevronDown } from "lucide-react-native";
|
|
3
4
|
import {
|
|
4
5
|
createContext,
|
|
@@ -33,16 +34,16 @@ function Accordion({ children, allowMultiple = false }) {
|
|
|
33
34
|
},
|
|
34
35
|
[allowMultiple]
|
|
35
36
|
);
|
|
36
|
-
return /* @__PURE__ */
|
|
37
|
+
return /* @__PURE__ */ jsx(AccordionContext.Provider, { value: { notifyOpen, register, allowMultiple }, children: /* @__PURE__ */ jsx(
|
|
37
38
|
View,
|
|
38
39
|
{
|
|
39
40
|
style: [
|
|
40
41
|
styles.group,
|
|
41
42
|
{ borderColor: t["--border-default"], backgroundColor: t["--surface-default"] }
|
|
42
|
-
]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
));
|
|
43
|
+
],
|
|
44
|
+
children
|
|
45
|
+
}
|
|
46
|
+
) });
|
|
46
47
|
}
|
|
47
48
|
let nextId = 0;
|
|
48
49
|
function AccordionItem({ title, children, defaultOpen = false, disabled = false }) {
|
|
@@ -72,26 +73,31 @@ function AccordionItem({ title, children, defaultOpen = false, disabled = false
|
|
|
72
73
|
});
|
|
73
74
|
}, [ctx]);
|
|
74
75
|
const spin = rotate.interpolate({ inputRange: [0, 1], outputRange: ["0deg", "180deg"] });
|
|
75
|
-
return /* @__PURE__ */
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
76
|
+
return /* @__PURE__ */ jsxs(View, { style: [styles.item, { borderBottomColor: t["--border-default"] }], children: [
|
|
77
|
+
/* @__PURE__ */ jsxs(
|
|
78
|
+
Pressable,
|
|
79
|
+
{
|
|
80
|
+
accessibilityRole: "button",
|
|
81
|
+
accessibilityState: { expanded: open, disabled },
|
|
82
|
+
accessibilityLabel: title,
|
|
83
|
+
disabled,
|
|
84
|
+
hitSlop: 4,
|
|
85
|
+
onPress: toggle,
|
|
86
|
+
style: ({ pressed }) => [
|
|
87
|
+
styles.header,
|
|
88
|
+
{
|
|
89
|
+
backgroundColor: pressed && !disabled ? t["--surface-raised"] : "transparent",
|
|
90
|
+
opacity: disabled ? 0.5 : 1
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ jsx(Text, { variant: "label", style: styles.title, numberOfLines: 1, children: title }),
|
|
95
|
+
/* @__PURE__ */ jsx(Animated.View, { style: { transform: [{ rotate: spin }] }, children: /* @__PURE__ */ jsx(ChevronDown, { size: 20, color: t["--text-muted"] }) })
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
),
|
|
99
|
+
open ? /* @__PURE__ */ jsx(View, { style: styles.body, children: typeof children === "string" ? /* @__PURE__ */ jsx(Text, { variant: "body-sm", color: "secondary", children }) : children }) : null
|
|
100
|
+
] });
|
|
95
101
|
}
|
|
96
102
|
const styles = StyleSheet.create({
|
|
97
103
|
group: {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "../../../chunk-ORMEWXMH.js";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
3
|
import { CheckCircle, AlertCircle, AlertTriangle, Info, X } from "lucide-react-native";
|
|
3
4
|
import { Pressable, StyleSheet, View } from "react-native";
|
|
4
5
|
import { Text } from "./text.js";
|
|
@@ -17,25 +18,30 @@ function Alert({ variant = "info", title, children, onClose, hideIcon = false })
|
|
|
17
18
|
const border = (_b = t[spec.border]) != null ? _b : t["--border-default"];
|
|
18
19
|
const fg = (_c = t[spec.text]) != null ? _c : t["--text-primary"];
|
|
19
20
|
const Icon = spec.icon;
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
+
return /* @__PURE__ */ jsxs(
|
|
21
22
|
View,
|
|
22
23
|
{
|
|
23
24
|
accessibilityRole: variant === "danger" ? "alert" : "summary",
|
|
24
|
-
style: [styles.container, { backgroundColor: bg, borderColor: border }]
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
25
|
+
style: [styles.container, { backgroundColor: bg, borderColor: border }],
|
|
26
|
+
children: [
|
|
27
|
+
!hideIcon && /* @__PURE__ */ jsx(Icon, { size: 18, color: fg, style: styles.icon }),
|
|
28
|
+
/* @__PURE__ */ jsxs(View, { style: styles.body, children: [
|
|
29
|
+
title != null && /* @__PURE__ */ jsx(Text, { variant: "label", style: { color: fg }, children: title }),
|
|
30
|
+
children != null && (typeof children === "string" ? /* @__PURE__ */ jsx(Text, { variant: "body-sm", style: [{ color: fg }, title != null && styles.childrenSpacing], children }) : /* @__PURE__ */ jsx(View, { style: title != null ? styles.childrenSpacing : void 0, children }))
|
|
31
|
+
] }),
|
|
32
|
+
onClose != null && /* @__PURE__ */ jsx(
|
|
33
|
+
Pressable,
|
|
34
|
+
{
|
|
35
|
+
accessibilityRole: "button",
|
|
36
|
+
accessibilityLabel: "Fechar",
|
|
37
|
+
hitSlop: 12,
|
|
38
|
+
onPress: onClose,
|
|
39
|
+
style: ({ pressed }) => [styles.close, { opacity: pressed ? 0.6 : 1 }],
|
|
40
|
+
children: /* @__PURE__ */ jsx(X, { size: 16, color: fg })
|
|
41
|
+
}
|
|
42
|
+
)
|
|
43
|
+
]
|
|
44
|
+
}
|
|
39
45
|
);
|
|
40
46
|
}
|
|
41
47
|
const styles = StyleSheet.create({
|