@lt-three/love3 0.1.0 → 0.1.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.
Files changed (271) hide show
  1. package/README.md +40 -40
  2. package/dist/native/analytics/animation.d.ts +1 -1
  3. package/dist/native/analytics/animation.js +1 -1
  4. package/dist/native/analytics/chart.types.d.ts +3 -3
  5. package/dist/native/analytics/metric-card.d.ts +3 -3
  6. package/dist/native/analytics/metric-card.js +3 -3
  7. package/dist/native/analytics/multi-line-chart.d.ts +9 -8
  8. package/dist/native/analytics/multi-line-chart.js +14 -13
  9. package/dist/native/analytics/pie-chart.d.ts +7 -7
  10. package/dist/native/analytics/pie-chart.js +8 -8
  11. package/dist/native/analytics/single-number.d.ts +4 -4
  12. package/dist/native/analytics/single-number.js +2 -2
  13. package/dist/native/atom/avatar.d.ts +6 -6
  14. package/dist/native/atom/avatar.js +2 -2
  15. package/dist/native/atom/badge.d.ts +5 -5
  16. package/dist/native/atom/button.d.ts +12 -12
  17. package/dist/native/atom/button.js +8 -8
  18. package/dist/native/atom/checkbox.d.ts +4 -4
  19. package/dist/native/atom/checkbox.js +2 -2
  20. package/dist/native/atom/colored-value.d.ts +4 -4
  21. package/dist/native/atom/colored-value.js +4 -4
  22. package/dist/native/atom/image.d.ts +7 -7
  23. package/dist/native/atom/image.js +2 -2
  24. package/dist/native/atom/label.d.ts +5 -5
  25. package/dist/native/atom/label.js +2 -2
  26. package/dist/native/atom/link.d.ts +5 -5
  27. package/dist/native/atom/link.js +5 -5
  28. package/dist/native/atom/readout.d.ts +7 -7
  29. package/dist/native/atom/readout.js +3 -3
  30. package/dist/native/atom/search-input.d.ts +2 -2
  31. package/dist/native/atom/search-input.js +2 -2
  32. package/dist/native/atom/select.d.ts +14 -14
  33. package/dist/native/atom/select.js +8 -8
  34. package/dist/native/atom/separator.d.ts +2 -3
  35. package/dist/native/atom/separator.js +2 -3
  36. package/dist/native/atom/skeleton.d.ts +3 -3
  37. package/dist/native/atom/skeleton.js +3 -3
  38. package/dist/native/atom/slider.d.ts +6 -6
  39. package/dist/native/atom/slider.js +3 -3
  40. package/dist/native/atom/spinner.d.ts +4 -4
  41. package/dist/native/atom/spinner.js +2 -2
  42. package/dist/native/atom/switch.d.ts +4 -4
  43. package/dist/native/atom/switch.js +3 -3
  44. package/dist/native/atom/symbol.d.ts +7 -7
  45. package/dist/native/atom/symbol.js +7 -7
  46. package/dist/native/atom/symbol.types.d.ts +8 -8
  47. package/dist/native/atom/symbol.types.js +7 -7
  48. package/dist/native/atom/text-field.d.ts +15 -15
  49. package/dist/native/atom/text-field.js +5 -5
  50. package/dist/native/atom/theme-toggle.d.ts +7 -7
  51. package/dist/native/atom/theme-toggle.js +4 -4
  52. package/dist/native/atom/timezone-select.d.ts +5 -5
  53. package/dist/native/atom/timezone-select.js +4 -4
  54. package/dist/native/atom/typography.d.ts +2 -2
  55. package/dist/native/atom/typography.js +2 -2
  56. package/dist/native/base/button.d.ts +13 -13
  57. package/dist/native/base/button.js +4 -4
  58. package/dist/native/base/form.d.ts +15 -15
  59. package/dist/native/base/form.js +11 -11
  60. package/dist/native/base/glass-card.d.ts +3 -3
  61. package/dist/native/base/glass-card.js +3 -3
  62. package/dist/native/base/input.d.ts +8 -8
  63. package/dist/native/base/input.js +7 -7
  64. package/dist/native/base/sheet.d.ts +27 -27
  65. package/dist/native/base/sheet.js +15 -15
  66. package/dist/native/form/checkbox.d.ts +3 -3
  67. package/dist/native/form/checkbox.js +2 -2
  68. package/dist/native/form/date-picker.d.ts +9 -9
  69. package/dist/native/form/date-picker.js +9 -9
  70. package/dist/native/form/form.d.ts +5 -6
  71. package/dist/native/form/form.js +4 -5
  72. package/dist/native/form/radio-group.d.ts +5 -5
  73. package/dist/native/form/radio-group.js +4 -4
  74. package/dist/native/form/select.d.ts +2 -2
  75. package/dist/native/form/select.js +2 -2
  76. package/dist/native/form/slider.d.ts +2 -2
  77. package/dist/native/form/slider.js +2 -2
  78. package/dist/native/form/switch.d.ts +2 -2
  79. package/dist/native/form/switch.js +2 -2
  80. package/dist/native/form/text-area.d.ts +2 -2
  81. package/dist/native/form/text-area.js +1 -1
  82. package/dist/native/form/text-input.d.ts +5 -5
  83. package/dist/native/form/text-input.js +8 -8
  84. package/dist/native/layout/accordion.d.ts +5 -5
  85. package/dist/native/layout/accordion.js +2 -2
  86. package/dist/native/layout/card.d.ts +8 -8
  87. package/dist/native/layout/card.js +3 -3
  88. package/dist/native/layout/description.d.ts +2 -2
  89. package/dist/native/layout/description.js +2 -2
  90. package/dist/native/layout/error.d.ts +5 -5
  91. package/dist/native/layout/error.js +2 -2
  92. package/dist/native/layout/information.d.ts +4 -4
  93. package/dist/native/layout/information.js +3 -3
  94. package/dist/native/layout/locked.d.ts +15 -15
  95. package/dist/native/layout/locked.js +7 -7
  96. package/dist/native/layout/modal.d.ts +8 -8
  97. package/dist/native/layout/modal.js +5 -5
  98. package/dist/native/layout/not-found.d.ts +4 -4
  99. package/dist/native/layout/not-found.js +3 -3
  100. package/dist/native/layout/page-frame.d.ts +8 -8
  101. package/dist/native/layout/page-frame.js +3 -3
  102. package/dist/native/layout/panel.d.ts +5 -5
  103. package/dist/native/layout/panel.js +5 -5
  104. package/dist/native/layout/reorderable-list.d.ts +14 -14
  105. package/dist/native/layout/reorderable-list.js +10 -10
  106. package/dist/native/layout/sheet.d.ts +10 -10
  107. package/dist/native/layout/sheet.js +4 -4
  108. package/dist/native/layout/simple-dialog.d.ts +3 -3
  109. package/dist/native/layout/simple-dialog.js +2 -2
  110. package/dist/native/layout/simple-table.d.ts +18 -18
  111. package/dist/native/layout/simple-table.js +1 -1
  112. package/dist/native/layout/tab-bar.d.ts +10 -10
  113. package/dist/native/layout/tab-bar.js +4 -4
  114. package/dist/native/layout/tabs.d.ts +6 -6
  115. package/dist/native/layout/tabs.js +4 -4
  116. package/dist/native/layout/tuning-panel.d.ts +10 -10
  117. package/dist/native/layout/tuning-panel.js +15 -15
  118. package/dist/native/lib/autocomplete.d.ts +1 -1
  119. package/dist/native/lib/autocomplete.js +1 -1
  120. package/dist/native/lib/breakpoints.d.ts +3 -3
  121. package/dist/native/lib/breakpoints.js +3 -3
  122. package/dist/native/lib/chart-palette.d.ts +2 -2
  123. package/dist/native/lib/chart-palette.js +2 -2
  124. package/dist/native/lib/confirm.d.ts +15 -16
  125. package/dist/native/lib/confirm.js +9 -10
  126. package/dist/native/lib/control.d.ts +9 -9
  127. package/dist/native/lib/external-store.d.ts +4 -5
  128. package/dist/native/lib/keyboard.d.ts +7 -7
  129. package/dist/native/lib/keyboard.js +7 -7
  130. package/dist/native/lib/labels.d.ts +6 -6
  131. package/dist/native/lib/labels.js +6 -6
  132. package/dist/native/lib/loading.d.ts +3 -3
  133. package/dist/native/lib/loading.js +3 -3
  134. package/dist/native/lib/network.d.ts +5 -6
  135. package/dist/native/lib/network.js +5 -6
  136. package/dist/native/lib/scheme.d.ts +7 -7
  137. package/dist/native/lib/scheme.js +3 -3
  138. package/dist/native/lib/snackbar.d.ts +12 -13
  139. package/dist/native/lib/snackbar.js +7 -8
  140. package/dist/native/lib/theme.d.ts +15 -15
  141. package/dist/native/lib/theme.js +15 -15
  142. package/dist/native/lib/timezone.d.ts +13 -13
  143. package/dist/native/lib/timezone.js +13 -13
  144. package/dist/native/lib/token-color.d.ts +1 -1
  145. package/dist/native/lib/token-color.js +1 -1
  146. package/dist/native/lib/tuning-context.d.ts +2 -2
  147. package/dist/native/lib/tuning.d.ts +10 -10
  148. package/dist/native/lib/tuning.js +8 -8
  149. package/dist/native/lib/typography.d.ts +3 -3
  150. package/dist/native/lib/typography.js +3 -3
  151. package/dist/native/lib/utils.d.ts +3 -3
  152. package/dist/native/lib/utils.js +3 -3
  153. package/dist/native/once/confirm.d.ts +2 -2
  154. package/dist/native/once/confirm.js +2 -2
  155. package/dist/native/once/error-boundary.d.ts +3 -3
  156. package/dist/native/once/error-boundary.js +2 -2
  157. package/dist/native/once/loading-lock.d.ts +3 -3
  158. package/dist/native/once/loading-lock.js +3 -3
  159. package/dist/native/once/offline-banner.d.ts +6 -6
  160. package/dist/native/once/offline-banner.js +5 -5
  161. package/dist/native/once/snackbar.d.ts +7 -7
  162. package/dist/native/once/snackbar.js +5 -5
  163. package/dist/native/styles.css +21 -21
  164. package/dist/shared/analytics.d.ts +23 -23
  165. package/dist/shared/button.d.ts +1 -1
  166. package/dist/shared/form.d.ts +7 -7
  167. package/dist/shared/form.js +2 -2
  168. package/dist/tokens/contrast-pairs.d.ts +9 -9
  169. package/dist/tokens/contrast-pairs.js +10 -10
  170. package/dist/tokens/index.d.ts +1 -1
  171. package/dist/tokens/index.js +1 -1
  172. package/dist/tokens/styles.gen.css +87 -87
  173. package/dist/tokens/tokens.gen.d.ts +2 -2
  174. package/dist/tokens/tokens.gen.js +2 -2
  175. package/dist/tuning/catalog.d.ts +8 -8
  176. package/dist/tuning/catalog.js +9 -9
  177. package/dist/tuning/color.d.ts +4 -4
  178. package/dist/tuning/color.js +5 -5
  179. package/dist/tuning/css.d.ts +13 -13
  180. package/dist/tuning/css.js +17 -17
  181. package/dist/tuning/model.d.ts +11 -11
  182. package/dist/tuning/model.js +11 -11
  183. package/dist/tuning/native.d.ts +18 -18
  184. package/dist/tuning/native.js +18 -18
  185. package/dist/tuning/schema.d.ts +15 -15
  186. package/dist/tuning/schema.js +22 -22
  187. package/dist/tuning/types.d.ts +25 -25
  188. package/dist/tuning/types.js +6 -6
  189. package/dist/web/analytics/line-chart.d.ts +6 -6
  190. package/dist/web/analytics/line-chart.js +3 -3
  191. package/dist/web/analytics/metric-card.d.ts +6 -6
  192. package/dist/web/analytics/metric-card.js +5 -5
  193. package/dist/web/analytics/multi-line-chart.d.ts +23 -23
  194. package/dist/web/analytics/multi-line-chart.js +33 -33
  195. package/dist/web/atom/avatar.d.ts +1 -1
  196. package/dist/web/atom/checkbox.d.ts +6 -6
  197. package/dist/web/atom/checkbox.js +2 -2
  198. package/dist/web/atom/colored-value.d.ts +4 -4
  199. package/dist/web/atom/colored-value.js +4 -4
  200. package/dist/web/atom/help.d.ts +1 -1
  201. package/dist/web/atom/segmented-control.d.ts +13 -14
  202. package/dist/web/atom/segmented-control.js +6 -7
  203. package/dist/web/atom/select.d.ts +7 -7
  204. package/dist/web/atom/select.js +5 -5
  205. package/dist/web/atom/slider.d.ts +3 -3
  206. package/dist/web/atom/slider.js +2 -2
  207. package/dist/web/atom/switch.d.ts +3 -3
  208. package/dist/web/atom/text-area.d.ts +9 -8
  209. package/dist/web/atom/text-area.js +9 -8
  210. package/dist/web/atom/text-field.d.ts +5 -4
  211. package/dist/web/atom/text-field.js +5 -4
  212. package/dist/web/atom/toggle-chip.d.ts +6 -6
  213. package/dist/web/atom/toggle-chip.js +4 -4
  214. package/dist/web/atom/tooltip.d.ts +6 -6
  215. package/dist/web/atom/tooltip.js +2 -2
  216. package/dist/web/base/accordion.js +1 -1
  217. package/dist/web/base/breadcrumb.d.ts +1 -1
  218. package/dist/web/base/breadcrumb.js +1 -1
  219. package/dist/web/base/card.d.ts +3 -3
  220. package/dist/web/base/card.js +2 -2
  221. package/dist/web/base/dialog.d.ts +1 -1
  222. package/dist/web/base/dialog.js +1 -1
  223. package/dist/web/base/form.d.ts +7 -7
  224. package/dist/web/base/form.js +5 -5
  225. package/dist/web/base/pagination.d.ts +5 -5
  226. package/dist/web/base/pagination.js +1 -1
  227. package/dist/web/base/sheet.d.ts +1 -1
  228. package/dist/web/base/sheet.js +1 -1
  229. package/dist/web/base/slider.d.ts +1 -1
  230. package/dist/web/base/sonner.d.ts +2 -2
  231. package/dist/web/base/sonner.js +2 -2
  232. package/dist/web/base/spinner.js +1 -1
  233. package/dist/web/form/checkbox.d.ts +8 -8
  234. package/dist/web/form/checkbox.js +3 -3
  235. package/dist/web/form/radio-group.js +3 -3
  236. package/dist/web/form/select.js +1 -1
  237. package/dist/web/form/slider.d.ts +3 -3
  238. package/dist/web/form/slider.js +3 -3
  239. package/dist/web/form/switch.d.ts +3 -3
  240. package/dist/web/form/switch.js +4 -4
  241. package/dist/web/form/text-area.js +1 -1
  242. package/dist/web/form/text-input.d.ts +1 -1
  243. package/dist/web/form/text-input.js +1 -1
  244. package/dist/web/layout/accordion.d.ts +5 -5
  245. package/dist/web/layout/accordion.js +2 -2
  246. package/dist/web/layout/alert-modal.d.ts +11 -11
  247. package/dist/web/layout/alert-modal.js +7 -7
  248. package/dist/web/layout/card.d.ts +1 -1
  249. package/dist/web/layout/information.d.ts +9 -9
  250. package/dist/web/layout/information.js +7 -7
  251. package/dist/web/layout/modal.d.ts +1 -1
  252. package/dist/web/layout/page-frame.d.ts +14 -14
  253. package/dist/web/layout/page-frame.js +7 -7
  254. package/dist/web/layout/scroll-area.d.ts +1 -1
  255. package/dist/web/layout/sheet.d.ts +4 -4
  256. package/dist/web/layout/simple-table.d.ts +18 -18
  257. package/dist/web/layout/simple-table.js +2 -2
  258. package/dist/web/layout/tabs.d.ts +4 -4
  259. package/dist/web/layout/titled-modal.d.ts +10 -11
  260. package/dist/web/layout/titled-modal.js +7 -8
  261. package/dist/web/lib/css-vars.d.ts +6 -6
  262. package/dist/web/lib/css-vars.js +5 -5
  263. package/dist/web/lib/dialog.d.ts +4 -4
  264. package/dist/web/lib/labels.d.ts +8 -8
  265. package/dist/web/lib/labels.js +8 -8
  266. package/dist/web/lib/modal-open-focus.d.ts +7 -7
  267. package/dist/web/lib/modal-open-focus.js +9 -9
  268. package/dist/web/lib/restore-focus.d.ts +4 -4
  269. package/dist/web/lib/restore-focus.js +4 -4
  270. package/dist/web/styles.css +33 -33
  271. package/package.json +2 -2
@@ -12,21 +12,21 @@ import { scheduleOnRN } from "react-native-worklets";
12
12
 
13
13
  //#region src/native/base/sheet.tsx
14
14
  /**
15
- * 下から出るシートの素体。`@lt-three/web` の base/sheet(Radix Dialog のラッパー)に対応する。
15
+ * The base for a bottom sheet. Mirrors the web base/sheet (a wrapper around Radix Dialog).
16
16
  *
17
- * ここに置くのは「面をどう出すか」だけで、見出しや本文の作法は `layout/sheet` が決める。
18
- * `atom/select` のピッカーのように独自の中身を敷きたいものが `layout/` を経由できない
19
- * (依存が逆流する)ので、web と同じく素体を base に置いて両方から使う。
17
+ * This holds only "how the surface appears"; conventions for headings and body are decided by `layout/sheet`.
18
+ * Things that want their own content, such as the `atom/select` picker, cannot go through `layout/`
19
+ * (the dependency would run backwards), so, as on the web, the base lives in base and both use it.
20
20
  */
21
- /** 中身の余白。`padded` が false でも下端の safe-area だけは必ず確保する。 */
21
+ /** The content padding. Even when `padded` is false, the bottom safe area is always secured. */
22
22
  const GUTTER = 16;
23
23
  /**
24
- * `Modal` の `animationType="slide"` は使わない。あれは**スクリムごと**競り上がるので、
25
- * 暗幕が下から生えてくる安っぽい見え方になる。ここではスクリムのフェードとパネルの
26
- * スライドを別々の曲線で動かす。
24
+ * Do not use `Modal`'s `animationType="slide"`. It slides up **together with the scrim**,
25
+ * so the dark overlay appears to grow from the bottom and looks cheap. Here the scrim's fade and the panel's
26
+ * slide are driven by separate curves.
27
27
  *
28
- * ダイアログの役割(`role="dialog"`・`aria-modal`)・フォーカスの閉じ込め・Esc(`onRequestClose`)は `Modal` が持つ
29
- * (react-native-web の `Modal` は役割と閉じ込めを出す。名前は持たないので `aria-label(ledby)` を渡す)。
28
+ * The dialog role (`role="dialog"`, `aria-modal`), focus trapping and Esc (`onRequestClose`) are provided by `Modal`
29
+ * (react-native-web's `Modal` emits the role and the trap. It has no name of its own, so pass `aria-label(ledby)`).
30
30
  */
31
31
  function SheetShell({ open, onOpenChange, dismissOnBackdropPress = true, maxHeightRatio = .85, onClosed, "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, children }) {
32
32
  const { height: windowHeight } = useWindowDimensions();
@@ -120,7 +120,7 @@ function SheetShell({ open, onOpenChange, dismissOnBackdropPress = true, maxHeig
120
120
  })
121
121
  });
122
122
  }
123
- /** 掴む合図(グラバー)・見出し・閉じるボタン。 */
123
+ /** The grab cue (grabber), the heading and the close button. */
124
124
  function SheetHeader({ title, description, closeLabel = CLOSE_LABEL, onClose, titleId, descriptionId }) {
125
125
  const ink = useTokenColor("--ink-500");
126
126
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(View, {
@@ -155,10 +155,10 @@ function SheetHeader({ title, description, closeLabel = CLOSE_LABEL, onClose, ti
155
155
  })] });
156
156
  }
157
157
  /**
158
- * シートの本文。
158
+ * The sheet body.
159
159
  *
160
- * `contentContainerClassName` は react-native-css で**効かない**(無言で padding が消えて
161
- * 文字が端で切れる)。余白は必ず `contentContainerStyle` に書くこと。
160
+ * `contentContainerClassName` **does not work** with react-native-css (the padding silently disappears and
161
+ * text gets clipped at the edge). Always write padding in `contentContainerStyle`.
162
162
  */
163
163
  function SheetScroll({ padded = true, hasFooter = false, children }) {
164
164
  const insets = useSafeAreaInsets();
@@ -173,7 +173,7 @@ function SheetScroll({ padded = true, hasFooter = false, children }) {
173
173
  children
174
174
  });
175
175
  }
176
- /** シートのフッター。ホームインジケータに潜らないよう safe-area を足す。 */
176
+ /** The sheet footer. Adds the safe area so it does not slip under the home indicator. */
177
177
  function SheetFooter({ children }) {
178
178
  const insets = useSafeAreaInsets();
179
179
  return /* @__PURE__ */ jsx(View, {
@@ -2,12 +2,12 @@ import { BaseInputProps } from "../../shared/form.js";
2
2
  import { ReactNode } from "react";
3
3
  //#region src/native/form/checkbox.d.ts
4
4
  export type CheckboxProps = BaseInputProps<boolean> & {
5
- /** チェックボックスの右に置くラベル。フィールドの `label` とは別物(こちらがチェックボックスの名前になる)。 */
5
+ /** Label placed to the right of the checkbox. Distinct from the field's `label` (this one becomes the checkbox's name). */
6
6
  checkboxLabel: ReactNode;
7
7
  };
8
8
  /**
9
- * TanStack Form 統合の Checkbox。web の `form/checkbox` と同じく
10
- * `value` / `onValueChange` を渡せば制御モード(field を使わない)、省略すれば field context から取る。
9
+ * Checkbox integrated with TanStack Form. Like the web `form/checkbox`,
10
+ * pass `value` / `onValueChange` for controlled mode (the field is not used); omit them to read from the field context.
11
11
  */
12
12
  export declare function Checkbox(props: CheckboxProps): import("react").JSX.Element;
13
13
  //#endregion
@@ -5,8 +5,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
5
5
 
6
6
  //#region src/native/form/checkbox.tsx
7
7
  /**
8
- * TanStack Form 統合の Checkbox。web の `form/checkbox` と同じく
9
- * `value` / `onValueChange` を渡せば制御モード(field を使わない)、省略すれば field context から取る。
8
+ * Checkbox integrated with TanStack Form. Like the web `form/checkbox`,
9
+ * pass `value` / `onValueChange` for controlled mode (the field is not used); omit them to read from the field context.
10
10
  */
11
11
  function Checkbox(props) {
12
12
  if (props.value !== void 0 && props.onValueChange !== void 0) return /* @__PURE__ */ jsx(Layout, {
@@ -4,20 +4,20 @@ export type DatePickerProps = FieldInputProps & {
4
4
  mode?: "date" | "time" | "datetime";
5
5
  minimumDate?: Date;
6
6
  maximumDate?: Date;
7
- /** 表示の整形。省略時はロケール既定の日付表記。 */
7
+ /** Formats the displayed value. Defaults to the locale's date notation. */
8
8
  format?: (value: Date) => string;
9
9
  };
10
10
  /**
11
- * TanStack Form 統合の日付・時刻入力。web の `form/date-picker` に対応する。
11
+ * Date/time input integrated with TanStack Form. Corresponds to the web `form/date-picker`.
12
12
  *
13
- * web は react-day-picker のカレンダーをポップオーバーに出すが、native は
14
- * OS 標準のピッカー(`@react-native-community/datetimepicker`)を使う。
15
- * iOS は常設のスピナー(inline)、Android はタップでダイアログという OS ごとの作法に従う。
16
- * react-native-web(preview・vitest)は、このライブラリに web 実装が無いので、`<input type="date">` などの差し替え
17
- * (`web/datetimepicker.tsx`)で描く(下に「OK」を出す iOS と同じ作法)。
13
+ * The web version shows a react-day-picker calendar in a popover, whereas native uses
14
+ * the OS-standard picker (`@react-native-community/datetimepicker`).
15
+ * It follows each OS's convention: a persistent inline spinner on iOS, a dialog opened by tapping on Android.
16
+ * react-native-web (preview, vitest) has no web implementation in that library, so it is rendered by a
17
+ * substitute such as `<input type="date">` (`web/datetimepicker.tsx`), with an "OK" shown below as on iOS.
18
18
  *
19
- * 値は field context から取る(制御モードは持たない。移植元は型だけ `value` / `onValueChange` を受けて無視していた)。
20
- * トリガーは、押すとピッカーが開く**ボタン**で、名前は「ラベル、現在の値」(`atom/select` と同じ)。
19
+ * The value comes from the field context (there is no controlled mode).
20
+ * The trigger is a **button** that opens the picker; its name is "label, current value" (same as `atom/select`).
21
21
  */
22
22
  export declare function DatePicker({ label, required, description, helpText, placeholder, disabled, debounce, className, wrapperClassName, mode, minimumDate, maximumDate, format, "data-testid": testID }: DatePickerProps): import("react").JSX.Element;
23
23
  //#endregion
@@ -11,23 +11,23 @@ import Feather from "@expo/vector-icons/Feather";
11
11
  import DateTimePicker from "@react-native-community/datetimepicker";
12
12
 
13
13
  //#region src/native/form/date-picker.tsx
14
- /** 日付・時刻の入力が名前を持たないとき(`label` が要素のときなど)に、ピッカーに付ける名前。 */
14
+ /** Name given to the picker when the date/time input has none (for example when `label` is an element). */
15
15
  const PICKER_LABEL = {
16
16
  date: "日付",
17
17
  time: "時刻",
18
18
  datetime: "日時"
19
19
  };
20
20
  /**
21
- * TanStack Form 統合の日付・時刻入力。web の `form/date-picker` に対応する。
21
+ * Date/time input integrated with TanStack Form. Corresponds to the web `form/date-picker`.
22
22
  *
23
- * web は react-day-picker のカレンダーをポップオーバーに出すが、native は
24
- * OS 標準のピッカー(`@react-native-community/datetimepicker`)を使う。
25
- * iOS は常設のスピナー(inline)、Android はタップでダイアログという OS ごとの作法に従う。
26
- * react-native-web(preview・vitest)は、このライブラリに web 実装が無いので、`<input type="date">` などの差し替え
27
- * (`web/datetimepicker.tsx`)で描く(下に「OK」を出す iOS と同じ作法)。
23
+ * The web version shows a react-day-picker calendar in a popover, whereas native uses
24
+ * the OS-standard picker (`@react-native-community/datetimepicker`).
25
+ * It follows each OS's convention: a persistent inline spinner on iOS, a dialog opened by tapping on Android.
26
+ * react-native-web (preview, vitest) has no web implementation in that library, so it is rendered by a
27
+ * substitute such as `<input type="date">` (`web/datetimepicker.tsx`), with an "OK" shown below as on iOS.
28
28
  *
29
- * 値は field context から取る(制御モードは持たない。移植元は型だけ `value` / `onValueChange` を受けて無視していた)。
30
- * トリガーは、押すとピッカーが開く**ボタン**で、名前は「ラベル、現在の値」(`atom/select` と同じ)。
29
+ * The value comes from the field context (there is no controlled mode).
30
+ * The trigger is a **button** that opens the picker; its name is "label, current value" (same as `atom/select`).
31
31
  */
32
32
  function DatePicker({ label, required, description, helpText, placeholder, disabled, debounce, className, wrapperClassName, mode = "date", minimumDate, maximumDate, format, "data-testid": testID }) {
33
33
  const [value, setValue] = useFieldValue({ debounce });
@@ -4,18 +4,17 @@ import { ReactNode } from "react";
4
4
  //#region src/native/form/form.d.ts
5
5
  export type SubmitButtonProps = Omit<ButtonProps, "onPress"> & {
6
6
  children: ReactNode;
7
- /** 初期値のままでも送信を許可する。 */
7
+ /** Allow submitting even when the value is still the initial one. */
8
8
  allowDefaultValue?: boolean;
9
9
  };
10
10
  /**
11
- * フォームの送信ボタン。送信中・未変更・バリデーション不通過を同じ条件で無効化する
12
- * (`createFormHook` の `formComponents` に載せて `form.SubmitButton` として使う)。
13
- * web の love3 にはまだ対応する部品が無い(`@lt-three/web` の `form/form` の `SubmitButton` に対応)。
11
+ * The form's submit button. It is disabled under the same conditions while submitting, unchanged, or failing validation
12
+ * (register it in `createFormHook`'s `formComponents` and use it as `form.SubmitButton`).
13
+ * The web side of love3 has no counterpart yet.
14
14
  */
15
15
  export declare function SubmitButton({ disabled, allowDefaultValue, children, ...props }: SubmitButtonProps): import("react").JSX.Element;
16
16
  /**
17
- * 配列フィールドの外装(ラベル・子・補足・エラー。`@lt-three/web` の `form/form` の `ArrayFields` に対応する)。
18
- * 移植元は `description` を受け取るだけで描かなかったので、描くようにした。
17
+ * Wrapper for array fields (label, children, supplementary text, error). Renders `description` as well.
19
18
  */
20
19
  export declare function ArrayFields({ label, required, description, children }: Pick<FieldInputProps, "label" | "required" | "description"> & {
21
20
  children: ReactNode;
@@ -5,9 +5,9 @@ import { jsx, jsxs } from "react/jsx-runtime";
5
5
 
6
6
  //#region src/native/form/form.tsx
7
7
  /**
8
- * フォームの送信ボタン。送信中・未変更・バリデーション不通過を同じ条件で無効化する
9
- * (`createFormHook` の `formComponents` に載せて `form.SubmitButton` として使う)。
10
- * web の love3 にはまだ対応する部品が無い(`@lt-three/web` の `form/form` の `SubmitButton` に対応)。
8
+ * The form's submit button. It is disabled under the same conditions while submitting, unchanged, or failing validation
9
+ * (register it in `createFormHook`'s `formComponents` and use it as `form.SubmitButton`).
10
+ * The web side of love3 has no counterpart yet.
11
11
  */
12
12
  function SubmitButton({ disabled, allowDefaultValue = false, children, ...props }) {
13
13
  const form = useFormContext();
@@ -26,8 +26,7 @@ function SubmitButton({ disabled, allowDefaultValue = false, children, ...props
26
26
  });
27
27
  }
28
28
  /**
29
- * 配列フィールドの外装(ラベル・子・補足・エラー。`@lt-three/web` の `form/form` の `ArrayFields` に対応する)。
30
- * 移植元は `description` を受け取るだけで描かなかったので、描くようにした。
29
+ * Wrapper for array fields (label, children, supplementary text, error). Renders `description` as well.
31
30
  */
32
31
  function ArrayFields({ label, required, description, children }) {
33
32
  return /* @__PURE__ */ jsxs(FormItem, { children: [
@@ -8,16 +8,16 @@ export type RadioOption = {
8
8
  };
9
9
  export type RadioGroupProps = FieldInputProps & {
10
10
  options: RadioOption[];
11
- /** `list` は縦積み、`box` は 1px 枠付きの横並び。web と同じ 2 形態。 */
11
+ /** `list` stacks vertically; `box` lays out horizontally with a 1px border. The same two forms as web. */
12
12
  type?: "list" | "box";
13
13
  };
14
14
  /**
15
- * TanStack Form 統合のラジオグループ。web の `form/radio-group` に対応する。
15
+ * Radio group integrated with TanStack Form. Corresponds to the web `form/radio-group`.
16
16
  *
17
- * つまみは 16px の**円**(web と同じ。`rounded-full`)で、未選択は line-control の枠、選択時はインディゴの枠と中心の点が入る。
17
+ * The knob is a 16px **circle** (same as web; `rounded-full`): unselected has a line-control border, selected has an indigo border and a center dot.
18
18
  *
19
- * グループは `radiogroup` で、ラベルが名前になる(`aria-labelledby`)。選択肢は `radio`(名前は選択肢の `label`)で、
20
- * 説明とエラーを各選択肢が指す(同じ field に入力が複数あるので、id は選択肢ごとに分ける)。
19
+ * The group is a `radiogroup` named by its label (`aria-labelledby`). Each option is a `radio` (named by the option's `label`),
20
+ * and each option points to the description and the error (one field holds several inputs, so ids are separated per option).
21
21
  */
22
22
  export declare function RadioGroup({ label, required, description, helpText, wrapperClassName, ...rest }: RadioGroupProps): import("react").JSX.Element;
23
23
  //#endregion
@@ -9,12 +9,12 @@ import { jsx, jsxs } from "react/jsx-runtime";
9
9
 
10
10
  //#region src/native/form/radio-group.tsx
11
11
  /**
12
- * TanStack Form 統合のラジオグループ。web の `form/radio-group` に対応する。
12
+ * Radio group integrated with TanStack Form. Corresponds to the web `form/radio-group`.
13
13
  *
14
- * つまみは 16px の**円**(web と同じ。`rounded-full`)で、未選択は line-control の枠、選択時はインディゴの枠と中心の点が入る。
14
+ * The knob is a 16px **circle** (same as web; `rounded-full`): unselected has a line-control border, selected has an indigo border and a center dot.
15
15
  *
16
- * グループは `radiogroup` で、ラベルが名前になる(`aria-labelledby`)。選択肢は `radio`(名前は選択肢の `label`)で、
17
- * 説明とエラーを各選択肢が指す(同じ field に入力が複数あるので、id は選択肢ごとに分ける)。
16
+ * The group is a `radiogroup` named by its label (`aria-labelledby`). Each option is a `radio` (named by the option's `label`),
17
+ * and each option points to the description and the error (one field holds several inputs, so ids are separated per option).
18
18
  */
19
19
  function RadioGroup({ label, required, description, helpText, wrapperClassName, ...rest }) {
20
20
  return /* @__PURE__ */ jsxs(FormItem, {
@@ -5,8 +5,8 @@ export type SelectProps = FieldInputProps & {
5
5
  options: (SelectOption | SelectOptionGroup)[];
6
6
  };
7
7
  /**
8
- * TanStack Form 統合の Select。web の `form/select` と同じ props(制御モードは持たない。制御版は `atom/select`)。
9
- * 値は field context から取る。placeholder の既定は web と同じ「選択してください」。
8
+ * Select integrated with TanStack Form. Same props as the web `form/select` (no controlled mode; use `atom/select` for a controlled version).
9
+ * The value comes from the field context. The default placeholder is the same as web's, "選択してください" ("Please select").
10
10
  */
11
11
  export declare function Select({ label, required, description, helpText, placeholder, disabled, debounce, options, className, wrapperClassName }: SelectProps): import("react").JSX.Element;
12
12
  //#endregion
@@ -6,8 +6,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/native/form/select.tsx
8
8
  /**
9
- * TanStack Form 統合の Select。web の `form/select` と同じ props(制御モードは持たない。制御版は `atom/select`)。
10
- * 値は field context から取る。placeholder の既定は web と同じ「選択してください」。
9
+ * Select integrated with TanStack Form. Same props as the web `form/select` (no controlled mode; use `atom/select` for a controlled version).
10
+ * The value comes from the field context. The default placeholder is the same as web's, "選択してください" ("Please select").
11
11
  */
12
12
  function Select({ label, required, description, helpText, placeholder = SELECT_PLACEHOLDER_LABEL, disabled, debounce, options, className, wrapperClassName }) {
13
13
  const [value, setValue] = useFieldValue({ debounce });
@@ -7,8 +7,8 @@ export type SliderProps = FieldInputProps & {
7
7
  formattedValue?: string;
8
8
  };
9
9
  /**
10
- * TanStack Form 統合の Slider。web の `form/slider` に対応する(単一値のみ。範囲は native に無い)。
11
- * ラベルと現在値の行は `atom/slider` が持つ。制御版が必要なら `atom/slider` を使う。
10
+ * Slider integrated with TanStack Form. Corresponds to the web `form/slider` (single value only; ranges do not exist on native).
11
+ * The label and current-value row belongs to `atom/slider`. Use `atom/slider` if you need a controlled version.
12
12
  */
13
13
  export declare function Slider({ label, required, description, helpText, disabled, debounce, min, max, step, formattedValue, className, wrapperClassName }: SliderProps): import("react").JSX.Element;
14
14
  //#endregion
@@ -5,8 +5,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
5
5
 
6
6
  //#region src/native/form/slider.tsx
7
7
  /**
8
- * TanStack Form 統合の Slider。web の `form/slider` に対応する(単一値のみ。範囲は native に無い)。
9
- * ラベルと現在値の行は `atom/slider` が持つ。制御版が必要なら `atom/slider` を使う。
8
+ * Slider integrated with TanStack Form. Corresponds to the web `form/slider` (single value only; ranges do not exist on native).
9
+ * The label and current-value row belongs to `atom/slider`. Use `atom/slider` if you need a controlled version.
10
10
  */
11
11
  function Slider({ label, required, description, helpText, disabled, debounce, min, max, step, formattedValue, className, wrapperClassName }) {
12
12
  const [value, setValue] = useFieldValue({ debounce });
@@ -2,8 +2,8 @@ import { BaseInputProps } from "../../shared/form.js";
2
2
  //#region src/native/form/switch.d.ts
3
3
  export type SwitchProps = BaseInputProps<boolean>;
4
4
  /**
5
- * TanStack Form 統合の Switch。web の `form/switch` と同じく「ラベル左・スイッチ右」の 1 行で並べる。
6
- * `value` / `onValueChange` を渡せば制御モード(field を使わない)、省略すれば field context から取る。
5
+ * Switch integrated with TanStack Form. Like the web `form/switch`, it lays out a single row: label on the left, switch on the right.
6
+ * Pass `value` / `onValueChange` for controlled mode (the field is not used); omit them to read from the field context.
7
7
  */
8
8
  export declare function Switch(props: SwitchProps): import("react").JSX.Element;
9
9
  //#endregion
@@ -6,8 +6,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/native/form/switch.tsx
8
8
  /**
9
- * TanStack Form 統合の Switch。web の `form/switch` と同じく「ラベル左・スイッチ右」の 1 行で並べる。
10
- * `value` / `onValueChange` を渡せば制御モード(field を使わない)、省略すれば field context から取る。
9
+ * Switch integrated with TanStack Form. Like the web `form/switch`, it lays out a single row: label on the left, switch on the right.
10
+ * Pass `value` / `onValueChange` for controlled mode (the field is not used); omit them to read from the field context.
11
11
  */
12
12
  function Switch(props) {
13
13
  if (props.value !== void 0 && props.onValueChange !== void 0) return /* @__PURE__ */ jsx(Layout, {
@@ -1,11 +1,11 @@
1
1
  import { FieldInputProps } from "../../shared/form.js";
2
2
  //#region src/native/form/text-area.d.ts
3
3
  export type TextareaProps = FieldInputProps & {
4
- /** 表示行数の目安(既定 5 行 ≒ web の min-h-[200px])。 */
4
+ /** Approximate number of visible lines (default 5 ≈ web's min-h-[200px]). */
5
5
  numberOfLines?: number;
6
6
  };
7
7
  /**
8
- * TanStack Form 統合の複数行入力。web の `form/text-area` に対応する。
8
+ * Multi-line input integrated with TanStack Form. Corresponds to the web `form/text-area`.
9
9
  */
10
10
  export declare function Textarea({ label, required, description, helpText, placeholder, disabled, debounce, className, wrapperClassName, numberOfLines, "data-testid": testID }: TextareaProps): import("react").JSX.Element;
11
11
  //#endregion
@@ -7,7 +7,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
7
7
 
8
8
  //#region src/native/form/text-area.tsx
9
9
  /**
10
- * TanStack Form 統合の複数行入力。web の `form/text-area` に対応する。
10
+ * Multi-line input integrated with TanStack Form. Corresponds to the web `form/text-area`.
11
11
  */
12
12
  function Textarea({ label, required, description, helpText, placeholder, disabled, debounce, className, wrapperClassName, numberOfLines = 5, "data-testid": testID }) {
13
13
  const [value, setValue] = useFieldValue({ debounce });
@@ -2,17 +2,17 @@ import { TextFieldProps, TextFieldType } from "../atom/text-field.js";
2
2
  import { FieldInputProps } from "../../shared/form.js";
3
3
  //#region src/native/form/text-input.d.ts
4
4
  export type TextInputProps = FieldInputProps & {
5
- /** `number` は数値キーボード + 数値としての格納に切り替える(空にすると null)。 */
5
+ /** `number` switches to the numeric keyboard and stores the value as a number (null when emptied). */
6
6
  type?: TextFieldType;
7
- /** 自動入力の種類(web の `TextInput.autoComplete` と同じ意味。`atom/text-field` と同じ型)。 */
7
+ /** Autofill kind (same meaning as web's `TextInput.autoComplete`; same type as `atom/text-field`). */
8
8
  autoComplete?: TextFieldProps["autoComplete"];
9
9
  autoCapitalize?: "none" | "sentences" | "words" | "characters";
10
10
  multiline?: boolean;
11
11
  };
12
12
  /**
13
- * TanStack Form 統合のテキスト入力。web の `form/text-input` に対応する。
14
- * 値は field context から取り、`debounce` の扱いも共通の `useFieldValue` に委ねる。
15
- * 入力枠そのものは `atom/text-field`(web の `base/input` に相当)を使う。
13
+ * Text input integrated with TanStack Form. Corresponds to the web `form/text-input`.
14
+ * The value comes from the field context, and `debounce` handling is delegated to the shared `useFieldValue`.
15
+ * The input frame itself uses `atom/text-field` (the counterpart of web's `base/input`).
16
16
  */
17
17
  export declare function TextInput({ label, required, description, helpText, placeholder, disabled, debounce, className, wrapperClassName, type, autoComplete, autoCapitalize, multiline, "data-testid": testID }: TextInputProps): import("react").JSX.Element;
18
18
  //#endregion
@@ -8,11 +8,11 @@ import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region src/native/form/text-input.tsx
9
9
  const DECIMAL = /^[+-]?(?:\d+\.?\d*|\.\d+)$/;
10
10
  /**
11
- * 数値欄の入力中の文字を読む。
12
- * - 前後の空白は無視し、空(`" "` を含む)は「値なし」(null)
13
- * - 全角の数字・記号は半角にそろえる(`12.5` → `12.5`)。`,` は小数点として受ける(`1,5` → 1.5。ロケール)。
14
- * 千の区切り(`1,000`)は区別できない(1 として読む)。桁の区切りは入れない前提
15
- * - 読めない文字(`abc`・`-`・`0x10`・`Infinity`・桁あふれ)は `ok: false`
11
+ * Parses the text typed into a number field.
12
+ * - Leading and trailing whitespace is ignored, and empty input (including `" "`) means "no value" (null)
13
+ * - Full-width digits and symbols are normalized to half-width (`12.5` → `12.5`). `,` is accepted as the decimal point (`1,5` → 1.5; locale).
14
+ * Thousands separators (`1,000`) cannot be told apart (read as 1); digit grouping is assumed not to be entered
15
+ * - Unreadable text (`abc`, `-`, `0x10`, `Infinity`, overflow) yields `ok: false`
16
16
  */
17
17
  function parseNumber(text) {
18
18
  const normalized = text.normalize("NFKC").replaceAll("−", "-").replace(",", ".").trim();
@@ -28,9 +28,9 @@ function parseNumber(text) {
28
28
  } : { ok: false };
29
29
  }
30
30
  /**
31
- * TanStack Form 統合のテキスト入力。web の `form/text-input` に対応する。
32
- * 値は field context から取り、`debounce` の扱いも共通の `useFieldValue` に委ねる。
33
- * 入力枠そのものは `atom/text-field`(web の `base/input` に相当)を使う。
31
+ * Text input integrated with TanStack Form. Corresponds to the web `form/text-input`.
32
+ * The value comes from the field context, and `debounce` handling is delegated to the shared `useFieldValue`.
33
+ * The input frame itself uses `atom/text-field` (the counterpart of web's `base/input`).
34
34
  */
35
35
  function TextInput({ label, required, description, helpText, placeholder, disabled, debounce, className, wrapperClassName, type = "text", autoComplete, autoCapitalize, multiline, "data-testid": testID }) {
36
36
  const [value, setValue, field] = useFieldValue({ debounce });
@@ -1,25 +1,25 @@
1
1
  import { ReactNode } from "react";
2
2
  //#region src/native/layout/accordion.d.ts
3
3
  export type AccordionEntry = {
4
- /** 項目の識別子。 */
4
+ /** Item identifier. */
5
5
  value: string;
6
6
  trigger: ReactNode;
7
7
  content: ReactNode;
8
8
  };
9
9
  export type AccordionProps = {
10
10
  items: AccordionEntry[];
11
- /** `single` は 1 つだけ開く、`multiple` は複数同時に開ける。 */
11
+ /** `single` opens one item at a time; `multiple` allows several open at once. */
12
12
  type?: "single" | "multiple";
13
13
  defaultValue?: string[];
14
14
  className?: string;
15
15
  itemClassName?: string;
16
- /** 開閉の行(トリガー)に付ける追加のクラス。 */
16
+ /** Extra classes for the open/close row (the trigger). */
17
17
  triggerClassName?: string;
18
18
  contentClassName?: string;
19
19
  };
20
20
  /**
21
- * `@lt-three/web` の layout/accordion と同じ「items を渡すだけ」のデータ駆動アコーディオン。
22
- * 区切りは 1px のヘアラインのみで、開閉のシェブロンだけが動く。
21
+ * A data-driven accordion, like the web `layout/accordion`: just pass `items`.
22
+ * Dividers are 1px hairlines only, and only the open/close chevron animates.
23
23
  */
24
24
  export declare function Accordion({ items, type, defaultValue, className, itemClassName, triggerClassName, contentClassName }: AccordionProps): import("react").JSX.Element;
25
25
  //#endregion
@@ -9,8 +9,8 @@ import Feather from "@expo/vector-icons/Feather";
9
9
  //#region src/native/layout/accordion.tsx
10
10
  if (Platform.OS === "android" && UIManager.setLayoutAnimationEnabledExperimental) UIManager.setLayoutAnimationEnabledExperimental(true);
11
11
  /**
12
- * `@lt-three/web` の layout/accordion と同じ「items を渡すだけ」のデータ駆動アコーディオン。
13
- * 区切りは 1px のヘアラインのみで、開閉のシェブロンだけが動く。
12
+ * A data-driven accordion, like the web `layout/accordion`: just pass `items`.
13
+ * Dividers are 1px hairlines only, and only the open/close chevron animates.
14
14
  */
15
15
  function Accordion({ items, type = "single", defaultValue = [], className, itemClassName, triggerClassName, contentClassName }) {
16
16
  const [open, setOpen] = useState(defaultValue);
@@ -1,10 +1,10 @@
1
1
  import { ReactNode } from "react";
2
2
  //#region src/native/layout/card.d.ts
3
- /** 文字・数字のアクション(それ自体が読み上げ名になる)。 */
3
+ /** A text or number action (it serves as its own spoken name). */
4
4
  type TextAction = string | number;
5
5
  /**
6
- * ヘッダー右端のアクション。**タップできるアクション(`actionOnPress`)が文字でない(アイコンなど)ときは、
7
- * 読み上げ名(`actionLabel`)が必須**(名前の無いボタンになるため)。
6
+ * The action at the right end of the header. **When the tappable action (`actionOnPress`) is not text (an icon, for example),
7
+ * a spoken name (`actionLabel`) is required** (otherwise the button would have no name).
8
8
  */
9
9
  type CardActionProps = {
10
10
  action?: undefined;
@@ -26,8 +26,8 @@ type CardActionProps = {
26
26
  export type CardProps = CardActionProps & {
27
27
  title?: ReactNode;
28
28
  /**
29
- * タイトルを見出しにする(`role="heading"` と `aria-level`)。画面の見出し構造に入れたいときに渡す。
30
- * 未指定ならただの文字(web の `headingLevel` と同じ意味)。
29
+ * Makes the title a heading (`role="heading"` and `aria-level`). Pass it when the title should be part of the screen's heading structure.
30
+ * When omitted it is plain text (same meaning as web's `headingLevel`).
31
31
  */
32
32
  headingLevel?: 2 | 3 | 4 | 5 | 6;
33
33
  description?: ReactNode;
@@ -37,10 +37,10 @@ export type CardProps = CardActionProps & {
37
37
  contentClassName?: string;
38
38
  };
39
39
  /**
40
- * `@lt-three/web` の layout/card と同じ「タイトル・説明・アクション・本文・フッター」の構成。
41
- * 外装(surface 角丸・1px の極薄の罫線・raised 面)は `Panel` が持つ。
40
+ * The same "title, description, action, body, footer" structure as the web `layout/card`.
41
+ * The shell (surface radius, a very faint 1px rule, raised surface) belongs to `Panel`.
42
42
  *
43
- * 中身に自前の余白や区切り線を敷きたいだけなら、素の面である `Panel` を直接使う。
43
+ * If you only want to lay out your own spacing and dividers inside, use `Panel`, the bare surface, directly.
44
44
  */
45
45
  export declare function Card({ title, headingLevel, description, action, actionOnPress, actionLabel, content, footer, className, contentClassName }: CardProps): import("react").JSX.Element;
46
46
  //#endregion
@@ -6,10 +6,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/native/layout/card.tsx
8
8
  /**
9
- * `@lt-three/web` の layout/card と同じ「タイトル・説明・アクション・本文・フッター」の構成。
10
- * 外装(surface 角丸・1px の極薄の罫線・raised 面)は `Panel` が持つ。
9
+ * The same "title, description, action, body, footer" structure as the web `layout/card`.
10
+ * The shell (surface radius, a very faint 1px rule, raised surface) belongs to `Panel`.
11
11
  *
12
- * 中身に自前の余白や区切り線を敷きたいだけなら、素の面である `Panel` を直接使う。
12
+ * If you only want to lay out your own spacing and dividers inside, use `Panel`, the bare surface, directly.
13
13
  */
14
14
  function Card({ title, headingLevel, description, action, actionOnPress, actionLabel, content, footer, className, contentClassName }) {
15
15
  const hasHeader = !!title || !!description || !!action;
@@ -9,8 +9,8 @@ export type DescriptionProps = {
9
9
  sections: DescriptionSection[];
10
10
  };
11
11
  /**
12
- * 見出し + 本文のセクションを 1px 罫線で区切って積む。
13
- * `@lt-three/web` の layout/description に対応する(利用規約・説明画面など)。
12
+ * Stacks heading + body sections separated by 1px rules.
13
+ * Corresponds to the web `layout/description` (terms of service, explanation screens, etc.).
14
14
  */
15
15
  export declare function Description({ sections }: DescriptionProps): import("react").JSX.Element;
16
16
  //#endregion
@@ -6,8 +6,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/native/layout/description.tsx
8
8
  /**
9
- * 見出し + 本文のセクションを 1px 罫線で区切って積む。
10
- * `@lt-three/web` の layout/description に対応する(利用規約・説明画面など)。
9
+ * Stacks heading + body sections separated by 1px rules.
10
+ * Corresponds to the web `layout/description` (terms of service, explanation screens, etc.).
11
11
  */
12
12
  function Description({ sections }) {
13
13
  return /* @__PURE__ */ jsx(View, {
@@ -1,6 +1,6 @@
1
1
  //#region src/native/layout/error.d.ts
2
2
  export type ErrorViewProps = {
3
- /** 表示文言。共有パッケージなので使用側が持つ(i18n を持ち込まない)。 */
3
+ /** Display text. This is a shared package, so the caller owns it (no i18n is brought in). */
4
4
  labels: {
5
5
  title: string;
6
6
  description?: string;
@@ -8,14 +8,14 @@ export type ErrorViewProps = {
8
8
  };
9
9
  onRetry: () => void;
10
10
  /**
11
- * 既定は画面いっぱいに中央寄せする。スクロール内の一部として差し込むときは
12
- * `h-full` が解決できないので、`className` で高さの指定を上書きする。
11
+ * By default it fills the screen and centers its content. When inserted as part of scrolling content,
12
+ * `h-full` cannot be resolved, so override the height with `className`.
13
13
  */
14
14
  className?: string;
15
15
  };
16
16
  /**
17
- * エラー時の画面。`@lt-three/web` の layout/error(ErrorComponent)に対応する。
18
- * `once/error-boundary` の中身としても使う。
17
+ * The screen shown on error.
18
+ * It is also used as the content of `once/error-boundary`.
19
19
  */
20
20
  export declare function ErrorView({ labels, onRetry, className }: ErrorViewProps): import("react").JSX.Element;
21
21
  //#endregion
@@ -8,8 +8,8 @@ import Feather from "@expo/vector-icons/Feather";
8
8
 
9
9
  //#region src/native/layout/error.tsx
10
10
  /**
11
- * エラー時の画面。`@lt-three/web` の layout/error(ErrorComponent)に対応する。
12
- * `once/error-boundary` の中身としても使う。
11
+ * The screen shown on error.
12
+ * It is also used as the content of `once/error-boundary`.
13
13
  */
14
14
  function ErrorView({ labels, onRetry, className }) {
15
15
  const ink = useTokenColor("--ink-1000");
@@ -11,15 +11,15 @@ export type InformationField = {
11
11
  };
12
12
  export type InformationProps = {
13
13
  fields: InformationField[];
14
- /** 値を大きめに出す(詳細画面のヘッダー等)。 */
14
+ /** Shows values larger (for a detail screen header, etc.). */
15
15
  highlighted?: boolean;
16
16
  className?: string;
17
17
  };
18
18
  /**
19
- * ラベルと値を並べる定義リスト。`@lt-three/web` の layout/information に対応する。
19
+ * A definition list that lays out labels and values. Corresponds to the web `layout/information`.
20
20
  *
21
- * web は画面が広いので複数カラムに分けられるが、native は幅が足りないので
22
- * **常に 1 カラム**(ラベル左・値右の行)で描く。
21
+ * Web has room to split into several columns, but native lacks the width, so it
22
+ * **always renders a single column** (rows with the label on the left and the value on the right).
23
23
  */
24
24
  export declare function Information({ fields, highlighted, className }: InformationProps): import("react").JSX.Element;
25
25
  //#endregion