@rojaostudio/ds 1.0.1 → 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.
Files changed (134) hide show
  1. package/dist/components/accordion.js +43 -37
  2. package/dist/components/alert.js +35 -28
  3. package/dist/components/avatar.js +41 -34
  4. package/dist/components/badge.js +21 -14
  5. package/dist/components/blocker-card.js +11 -2
  6. package/dist/components/bottom-sheet.js +60 -53
  7. package/dist/components/breadcrumb.js +32 -22
  8. package/dist/components/button.js +18 -11
  9. package/dist/components/card.js +24 -9
  10. package/dist/components/chat-bubble.js +6 -5
  11. package/dist/components/checkbox.js +61 -48
  12. package/dist/components/chip-input.js +98 -81
  13. package/dist/components/chips.js +36 -29
  14. package/dist/components/choice-card.js +48 -42
  15. package/dist/components/choice-carousel.js +79 -74
  16. package/dist/components/choice-preview-card.js +17 -6
  17. package/dist/components/color-input.js +41 -35
  18. package/dist/components/combobox.js +97 -75
  19. package/dist/components/context-menu.js +17 -13
  20. package/dist/components/copilot-hint.js +40 -31
  21. package/dist/components/copy-field.js +8 -5
  22. package/dist/components/currency-input.js +40 -32
  23. package/dist/components/danger-zone.js +19 -9
  24. package/dist/components/data-table-header.js +185 -135
  25. package/dist/components/date-picker.js +114 -95
  26. package/dist/components/divider.js +11 -8
  27. package/dist/components/drawer.js +40 -28
  28. package/dist/components/dropzone.js +23 -20
  29. package/dist/components/empty-state.js +26 -23
  30. package/dist/components/fab.js +38 -26
  31. package/dist/components/filter-chip.js +20 -16
  32. package/dist/components/floating-stepper.js +42 -32
  33. package/dist/components/form-card-header.js +9 -1
  34. package/dist/components/icon-button.js +19 -13
  35. package/dist/components/image-crop-modal.js +69 -48
  36. package/dist/components/image-upload.js +172 -128
  37. package/dist/components/input.js +90 -62
  38. package/dist/components/insight-card.js +12 -1
  39. package/dist/components/label.js +12 -7
  40. package/dist/components/media-tile.js +11 -8
  41. package/dist/components/menu.js +28 -25
  42. package/dist/components/modal.js +43 -28
  43. package/dist/components/notice.js +34 -16
  44. package/dist/components/option-tile.js +55 -49
  45. package/dist/components/page-shell.js +13 -6
  46. package/dist/components/page-skeleton.js +32 -2
  47. package/dist/components/page-tabs.js +39 -26
  48. package/dist/components/pagination.js +38 -33
  49. package/dist/components/paywall-banner.js +19 -3
  50. package/dist/components/paywall.js +18 -8
  51. package/dist/components/phone-frame.js +5 -4
  52. package/dist/components/phone-input.js +50 -31
  53. package/dist/components/pix-icon.js +11 -6
  54. package/dist/components/popover.js +27 -23
  55. package/dist/components/pricing-card.js +16 -1
  56. package/dist/components/qr-display.js +16 -11
  57. package/dist/components/radio.js +73 -56
  58. package/dist/components/row-actions.js +61 -53
  59. package/dist/components/saving-bar-context.js +35 -29
  60. package/dist/components/saving-bar.js +36 -33
  61. package/dist/components/search.js +49 -44
  62. package/dist/components/section-card.js +43 -35
  63. package/dist/components/section-header.js +11 -1
  64. package/dist/components/select.js +83 -62
  65. package/dist/components/selectable-card.js +10 -3
  66. package/dist/components/setting-row.js +11 -1
  67. package/dist/components/settings-list.js +9 -5
  68. package/dist/components/skeleton.js +6 -5
  69. package/dist/components/slider.js +52 -38
  70. package/dist/components/spinner.js +18 -12
  71. package/dist/components/step-progress.js +11 -10
  72. package/dist/components/summary-bar.js +33 -28
  73. package/dist/components/table.js +20 -15
  74. package/dist/components/textarea.js +40 -24
  75. package/dist/components/themed.d.ts +1 -1
  76. package/dist/components/themed.js +2 -1
  77. package/dist/components/time-picker.js +117 -97
  78. package/dist/components/toaster.js +80 -74
  79. package/dist/components/toggle-card-compact.js +79 -71
  80. package/dist/components/toggle-card.js +61 -53
  81. package/dist/components/toggle-group.js +35 -29
  82. package/dist/components/toggle.js +46 -36
  83. package/dist/components/tooltip.js +30 -25
  84. package/dist/components/typing-indicator.js +10 -7
  85. package/dist/targets/native/components/accordion.js +31 -25
  86. package/dist/targets/native/components/alert.js +22 -16
  87. package/dist/targets/native/components/avatar.js +36 -29
  88. package/dist/targets/native/components/badge.js +4 -3
  89. package/dist/targets/native/components/button.js +11 -4
  90. package/dist/targets/native/components/card.js +2 -1
  91. package/dist/targets/native/components/checkbox.js +18 -15
  92. package/dist/targets/native/components/chips.js +19 -16
  93. package/dist/targets/native/components/choice-card.js +29 -23
  94. package/dist/targets/native/components/context-menu.js +13 -9
  95. package/dist/targets/native/components/currency-input.js +28 -25
  96. package/dist/targets/native/components/danger-zone.js +10 -4
  97. package/dist/targets/native/components/date-picker.js +86 -70
  98. package/dist/targets/native/components/divider.js +3 -2
  99. package/dist/targets/native/components/empty-state.js +6 -1
  100. package/dist/targets/native/components/fab.js +32 -26
  101. package/dist/targets/native/components/filter-chip.js +9 -8
  102. package/dist/targets/native/components/form-field.js +20 -10
  103. package/dist/targets/native/components/form-screen.js +50 -45
  104. package/dist/targets/native/components/google-icon.js +31 -25
  105. package/dist/targets/native/components/icon-button.js +6 -4
  106. package/dist/targets/native/components/icon.js +2 -1
  107. package/dist/targets/native/components/image-upload.js +59 -50
  108. package/dist/targets/native/components/input.js +41 -34
  109. package/dist/targets/native/components/list-item.js +29 -23
  110. package/dist/targets/native/components/menu.js +12 -10
  111. package/dist/targets/native/components/modal.js +41 -32
  112. package/dist/targets/native/components/paywall-banner.js +13 -4
  113. package/dist/targets/native/components/paywall.js +11 -1
  114. package/dist/targets/native/components/radio.js +19 -16
  115. package/dist/targets/native/components/search.js +41 -38
  116. package/dist/targets/native/components/select.js +71 -63
  117. package/dist/targets/native/components/sheet.js +36 -30
  118. package/dist/targets/native/components/skeleton.js +6 -5
  119. package/dist/targets/native/components/slider.js +51 -43
  120. package/dist/targets/native/components/spinner.js +2 -1
  121. package/dist/targets/native/components/stepper.js +14 -9
  122. package/dist/targets/native/components/switch.js +15 -14
  123. package/dist/targets/native/components/text.js +2 -1
  124. package/dist/targets/native/components/textarea.js +2 -1
  125. package/dist/targets/native/components/theme.js +2 -1
  126. package/dist/targets/native/components/toaster.js +24 -21
  127. package/dist/targets/native/index.d.ts +1 -1
  128. package/dist/targets/native/index.js +1 -3
  129. package/package.json +3 -6
  130. package/styles/base.css +3 -3
  131. package/brand/rojao-black-on-white.png +0 -0
  132. package/brand/rojao-black.png +0 -0
  133. package/brand/rojao-white-on-black.png +0 -0
  134. 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__ */ React.createElement(
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
- name && /* @__PURE__ */ React.createElement("input", { type: "hidden", name, value: checked ? "on" : "" }),
20
- /* @__PURE__ */ React.createElement(
21
- "button",
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
- "absolute top-0.5 inline-block h-4 w-4 rounded-full bg-(--surface-default) shadow-sm transition-transform",
65
- checked ? "translate-x-[18px]" : "translate-x-0.5"
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
- checked && children && /* @__PURE__ */ React.createElement("div", { className: "px-4 pb-4 pt-4 space-y-4 [border-top:1px_solid_var(--section-card-divider)] [background:var(--surface-default)]" }, children)
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__ */ React.createElement(
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
- options.map((opt) => {
50
- const active = isActive(opt);
51
- return /* @__PURE__ */ React.createElement(
52
- "button",
53
- {
54
- key: opt.value,
55
- type: "button",
56
- role: isMulti ? "switch" : "radio",
57
- "aria-checked": active,
58
- disabled: opt.disabled,
59
- style: opt.style,
60
- onClick: () => handleClick(opt),
61
- className: [
62
- "inline-flex items-center justify-center rounded-(--radius-control) font-medium transition-colors",
63
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-stroke-focus focus-visible:z-10",
64
- "disabled:cursor-not-allowed disabled:opacity-50",
65
- stretch ? "flex-1" : "",
66
- SIZE_CLASS[size],
67
- 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"
68
- ].join(" ")
69
- },
70
- opt.icon && /* @__PURE__ */ React.createElement("span", { className: "[&_svg]:size-4 shrink-0" }, opt.icon),
71
- opt.label && /* @__PURE__ */ React.createElement("span", null, opt.label)
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__ */ React.createElement("div", { className: ["flex flex-col gap-1.5", className].join(" ") }, /* @__PURE__ */ React.createElement("label", { htmlFor: groupId, className: "text-label font-medium text-fg-primary" }, label), group);
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__ */ React.createElement("span", { className: "flex flex-col gap-0.5 select-none" }, label && /* @__PURE__ */ React.createElement("span", { className: [sz.text, "text-fg-primary leading-snug"].join(" ") }, label), description && /* @__PURE__ */ React.createElement("span", { className: "text-caption text-fg-muted leading-snug" }, description));
18
- const switchEl = /* @__PURE__ */ React.createElement("span", { className: ["relative inline-flex shrink-0 items-center", sz.track].join(" ") }, /* @__PURE__ */ React.createElement(
19
- "input",
20
- __spreadValues({
21
- ref,
22
- type: "checkbox",
23
- role: "switch",
24
- id: inputId,
25
- className: "peer sr-only"
26
- }, props)
27
- ), /* @__PURE__ */ React.createElement(
28
- "span",
29
- {
30
- className: [
31
- "absolute inset-0 rounded-full transition-colors",
32
- "bg-surface-raised border border-stroke-control",
33
- "peer-checked:bg-(--toggle-track-active) peer-checked:border-transparent",
34
- "peer-focus-visible:ring-2 peer-focus-visible:ring-stroke-focus/30",
35
- "peer-disabled:cursor-not-allowed"
36
- ].join(" ")
37
- }
38
- ), /* @__PURE__ */ React.createElement(
39
- "span",
40
- {
41
- className: [
42
- "relative rounded-full bg-surface-default shadow-sm transition-transform translate-x-0.5",
43
- sz.thumb
44
- ].join(" ")
45
- }
46
- ));
47
- return /* @__PURE__ */ React.createElement(
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
- labelPosition === "left" && labelEl,
58
- /* @__PURE__ */ React.createElement("span", { className: "flex items-center pt-0.5" }, switchEl),
59
- labelPosition === "right" && labelEl
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__ */ React.createElement(
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
- children,
64
- pos && /* @__PURE__ */ React.createElement(
65
- "span",
66
- {
67
- id,
68
- role: "tooltip",
69
- style: { position: "fixed", top: pos.top, left: pos.left, transform: pos.transform },
70
- 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}` : ""}`
71
- },
72
- /* @__PURE__ */ React.createElement(
73
- "span",
74
- {
75
- "aria-hidden": "true",
76
- className: [
77
- "absolute border-[5px]",
78
- ARROW_CLASSES[side]
79
- ].join(" "),
80
- style: { width: 0, height: 0 }
81
- }
82
- ),
83
- content
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__ */ React.createElement(ChatBubble, { variant: "bot", ariaLabel }, /* @__PURE__ */ React.createElement(
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
- /* @__PURE__ */ React.createElement("span", { style: dotStyle("0ms") }),
21
- /* @__PURE__ */ React.createElement("span", { style: dotStyle("200ms") }),
22
- /* @__PURE__ */ React.createElement("span", { style: dotStyle("400ms") })
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__ */ React.createElement(AccordionContext.Provider, { value: { notifyOpen, register, allowMultiple } }, /* @__PURE__ */ React.createElement(
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
- children
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__ */ React.createElement(View, { style: [styles.item, { borderBottomColor: t["--border-default"] }] }, /* @__PURE__ */ React.createElement(
76
- Pressable,
77
- {
78
- accessibilityRole: "button",
79
- accessibilityState: { expanded: open, disabled },
80
- accessibilityLabel: title,
81
- disabled,
82
- hitSlop: 4,
83
- onPress: toggle,
84
- style: ({ pressed }) => [
85
- styles.header,
86
- {
87
- backgroundColor: pressed && !disabled ? t["--surface-raised"] : "transparent",
88
- opacity: disabled ? 0.5 : 1
89
- }
90
- ]
91
- },
92
- /* @__PURE__ */ React.createElement(Text, { variant: "label", style: styles.title, numberOfLines: 1 }, title),
93
- /* @__PURE__ */ React.createElement(Animated.View, { style: { transform: [{ rotate: spin }] } }, /* @__PURE__ */ React.createElement(ChevronDown, { size: 20, color: t["--text-muted"] }))
94
- ), open ? /* @__PURE__ */ React.createElement(View, { style: styles.body }, typeof children === "string" ? /* @__PURE__ */ React.createElement(Text, { variant: "body-sm", color: "secondary" }, children) : children) : null);
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__ */ React.createElement(
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
- !hideIcon && /* @__PURE__ */ React.createElement(Icon, { size: 18, color: fg, style: styles.icon }),
27
- /* @__PURE__ */ React.createElement(View, { style: styles.body }, title != null && /* @__PURE__ */ React.createElement(Text, { variant: "label", style: { color: fg } }, title), children != null && (typeof children === "string" ? /* @__PURE__ */ React.createElement(Text, { variant: "body-sm", style: [{ color: fg }, title != null && styles.childrenSpacing] }, children) : /* @__PURE__ */ React.createElement(View, { style: title != null ? styles.childrenSpacing : void 0 }, children))),
28
- onClose != null && /* @__PURE__ */ React.createElement(
29
- Pressable,
30
- {
31
- accessibilityRole: "button",
32
- accessibilityLabel: "Fechar",
33
- hitSlop: 12,
34
- onPress: onClose,
35
- style: ({ pressed }) => [styles.close, { opacity: pressed ? 0.6 : 1 }]
36
- },
37
- /* @__PURE__ */ React.createElement(X, { size: 16, color: fg })
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({