@godxjp/ui 28.0.0 → 28.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -258,9 +258,19 @@ export type ToneProp = "default" | "success" | "warning" | "destructive" | "info
258
258
  * Alert STRUCTURAL axis (orthogonal to `tone`, which owns colour/semantics):
259
259
  * `default` — the inline card (rounded, framed on all sides);
260
260
  * `banner` — the full-bleed page/shell attention strip the `Banner` export renders
261
- * (square corners, hairline block-end rule only, `--banner-*` token geometry).
261
+ * (square corners, hairline block-end rule only, `--banner-*` token geometry);
262
+ * `callout` — the in-prose aside the `Callout` export renders (leading rail, `--callout-*`
263
+ * geometry) and, uniquely, the one value that is NOT a live region: it carries `role="note"`
264
+ * because it is part of the document being read, not an update to it (gh#765).
262
265
  */
263
- export type AlertVariantProp = "default" | "banner";
266
+ export type AlertVariantProp = "default" | "banner" | "callout";
267
+ /**
268
+ * Callout kind — the five admonitions GitHub documents (`> [!NOTE]`, `[!TIP]`, `[!IMPORTANT]`,
269
+ * `[!WARNING]`, `[!CAUTION]`), which Obsidian's lower-case spelling maps onto one-for-one. It is a
270
+ * PRESET, not a second colour axis: each kind resolves to a `tone` and a leading glyph that
271
+ * `tone`/`icon` still override per instance.
272
+ */
273
+ export type CalloutKindProp = "note" | "tip" | "important" | "warning" | "caution";
264
274
  /** Sort direction for table columns. */
265
275
  export type SortDirectionProp = "asc" | "desc";
266
276
  /** Table column text alignment. */
@@ -62,6 +62,34 @@
62
62
  padding-inline-end: calc(var(--banner-space-inset-inline) + var(--space-8));
63
63
  }
64
64
 
65
+ [data-slot="alert"][data-variant="callout"] {
66
+ border-radius: var(--callout-radius);
67
+ border-block-width: 0;
68
+ border-inline-end-width: 0;
69
+ border-inline-start-width: var(--callout-rail-width);
70
+ border-start-start-radius: 0;
71
+ border-end-start-radius: 0;
72
+ padding-block: var(--callout-space-inset-block);
73
+ padding-inline: var(--callout-space-inset-inline);
74
+ margin-block: var(--callout-space-stack);
75
+ }
76
+
77
+ [data-slot="alert"][data-variant="callout"][data-tone="destructive"] {
78
+ border-color: hsl(var(--destructive));
79
+ }
80
+
81
+ [data-slot="alert"][data-variant="callout"][data-tone="warning"] {
82
+ border-color: hsl(var(--warning));
83
+ }
84
+
85
+ [data-slot="alert"][data-variant="callout"][data-tone="success"] {
86
+ border-color: hsl(var(--success));
87
+ }
88
+
89
+ [data-slot="alert"][data-variant="callout"][data-tone="info"] {
90
+ border-color: hsl(var(--info));
91
+ }
92
+
65
93
  [data-slot="alert-icon"] {
66
94
  width: var(--alert-icon-size);
67
95
  height: var(--alert-icon-size);
@@ -220,31 +220,151 @@
220
220
  }
221
221
 
222
222
  [data-slot="tabs"][data-variant="card"][data-placement="start"] [data-slot="tabs-list"],
223
- [data-slot="tabs"][data-variant="editable-card"][data-placement="start"]
224
- [data-slot="tabs-list"] {
223
+ [data-slot="tabs"][data-variant="editable-card"][data-placement="start"] [data-slot="tabs-list"] {
225
224
  box-shadow: inset calc(-1 * var(--tabs-card-rail-border-width)) 0 0 hsl(var(--border));
226
225
  }
227
226
 
228
227
  [data-slot="tabs"][data-variant="card"][data-placement="end"] [data-slot="tabs-list"],
229
- [data-slot="tabs"][data-variant="editable-card"][data-placement="end"]
230
- [data-slot="tabs-list"] {
228
+ [data-slot="tabs"][data-variant="editable-card"][data-placement="end"] [data-slot="tabs-list"] {
231
229
  box-shadow: inset var(--tabs-card-rail-border-width) 0 0 hsl(var(--border));
232
230
  }
233
231
 
234
- [dir="rtl"] [data-slot="tabs"][data-variant="card"][data-placement="start"]
232
+ [dir="rtl"]
233
+ [data-slot="tabs"][data-variant="card"][data-placement="start"]
235
234
  [data-slot="tabs-list"],
236
- [dir="rtl"] [data-slot="tabs"][data-variant="editable-card"][data-placement="start"]
235
+ [dir="rtl"]
236
+ [data-slot="tabs"][data-variant="editable-card"][data-placement="start"]
237
237
  [data-slot="tabs-list"] {
238
238
  box-shadow: inset var(--tabs-card-rail-border-width) 0 0 hsl(var(--border));
239
239
  }
240
240
 
241
- [dir="rtl"] [data-slot="tabs"][data-variant="card"][data-placement="end"]
242
- [data-slot="tabs-list"],
243
- [dir="rtl"] [data-slot="tabs"][data-variant="editable-card"][data-placement="end"]
241
+ [dir="rtl"] [data-slot="tabs"][data-variant="card"][data-placement="end"] [data-slot="tabs-list"],
242
+ [dir="rtl"]
243
+ [data-slot="tabs"][data-variant="editable-card"][data-placement="end"]
244
244
  [data-slot="tabs-list"] {
245
245
  box-shadow: inset calc(-1 * var(--tabs-card-rail-border-width)) 0 0 hsl(var(--border));
246
246
  }
247
247
 
248
+ [data-slot="tabs"][data-bodied="true"] {
249
+ --tabs-root-gap: 0px;
250
+ }
251
+
252
+ [data-slot="tabs"][data-bodied="true"][data-variant="card"] [data-slot="tabs-list"],
253
+ [data-slot="tabs"][data-bodied="true"][data-variant="editable-card"] [data-slot="tabs-list"],
254
+ [dir="rtl"] [data-slot="tabs"][data-bodied="true"][data-variant="card"] [data-slot="tabs-list"],
255
+ [dir="rtl"]
256
+ [data-slot="tabs"][data-bodied="true"][data-variant="editable-card"]
257
+ [data-slot="tabs-list"] {
258
+ box-shadow: none;
259
+ }
260
+
261
+ [data-slot="tabs"][data-bodied="true"][data-placement="top"] .ui-tabs-bar {
262
+ align-items: flex-end;
263
+ }
264
+
265
+ [data-slot="tabs"][data-bodied="true"][data-placement="bottom"] .ui-tabs-bar {
266
+ align-items: flex-start;
267
+ }
268
+
269
+ [data-slot="tabs"][data-bodied="true"][data-placement="top"] .ui-tabs-extra[data-side="end"],
270
+ [data-slot="tabs"][data-bodied="true"][data-placement="bottom"] .ui-tabs-extra[data-side="end"] {
271
+ margin-inline-end: calc(var(--tabs-panel-space-inset) + var(--tabs-panel-border-width));
272
+ }
273
+
274
+ [data-slot="tabs"][data-bodied="true"][data-placement="top"] .ui-tabs-extra[data-side="start"],
275
+ [data-slot="tabs"][data-bodied="true"][data-placement="bottom"]
276
+ .ui-tabs-extra[data-side="start"] {
277
+ margin-inline-start: calc(var(--tabs-panel-space-inset) + var(--tabs-panel-border-width));
278
+ }
279
+
280
+ [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-panel"],
281
+ [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-content"] {
282
+ border: var(--tabs-panel-border-width) solid hsl(var(--border));
283
+ border-radius: var(--tabs-panel-radius);
284
+ background: hsl(var(--tabs-panel-background, var(--background)));
285
+ padding: var(--tabs-panel-space-inset);
286
+ }
287
+
288
+ [data-slot="tabs"][data-bodied="true"][data-placement="top"] > [data-slot="tabs-panel"],
289
+ [data-slot="tabs"][data-bodied="true"][data-placement="top"] > [data-slot="tabs-content"] {
290
+ margin-block-start: calc(-1 * var(--tabs-panel-border-width));
291
+ border-start-start-radius: 0;
292
+ border-start-end-radius: 0;
293
+ }
294
+
295
+ [data-slot="tabs"][data-bodied="true"][data-placement="bottom"] > [data-slot="tabs-panel"],
296
+ [data-slot="tabs"][data-bodied="true"][data-placement="bottom"] > [data-slot="tabs-content"] {
297
+ margin-block-end: calc(-1 * var(--tabs-panel-border-width));
298
+ border-end-start-radius: 0;
299
+ border-end-end-radius: 0;
300
+ }
301
+
302
+ [data-slot="tabs"][data-bodied="true"][data-placement="start"] > [data-slot="tabs-panel"],
303
+ [data-slot="tabs"][data-bodied="true"][data-placement="start"] > [data-slot="tabs-content"] {
304
+ margin-inline-start: calc(-1 * var(--tabs-panel-border-width));
305
+ border-start-start-radius: 0;
306
+ border-end-start-radius: 0;
307
+ }
308
+
309
+ [data-slot="tabs"][data-bodied="true"][data-placement="end"] > [data-slot="tabs-panel"],
310
+ [data-slot="tabs"][data-bodied="true"][data-placement="end"] > [data-slot="tabs-content"] {
311
+ margin-inline-end: calc(-1 * var(--tabs-panel-border-width));
312
+ border-start-end-radius: 0;
313
+ border-end-end-radius: 0;
314
+ }
315
+
316
+ @media (forced-colors: active) {
317
+ [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-panel"],
318
+ [data-slot="tabs"][data-bodied="true"] > [data-slot="tabs-content"] {
319
+ border-color: CanvasText;
320
+ }
321
+
322
+ [data-slot="tabs"][data-bodied="true"][data-placement="top"]
323
+ [data-slot="tabs-trigger"][data-state="active"] {
324
+ border-block-end-style: none;
325
+ }
326
+
327
+ [data-slot="tabs"][data-bodied="true"][data-placement="bottom"]
328
+ [data-slot="tabs-trigger"][data-state="active"] {
329
+ border-block-start-style: none;
330
+ }
331
+ }
332
+
333
+ .ui-tabs-count {
334
+ display: inline-flex;
335
+ align-items: center;
336
+ justify-content: center;
337
+ min-inline-size: var(--tabs-count-min-width);
338
+ margin-inline-start: var(--tabs-count-gap);
339
+ border-radius: var(--tabs-count-radius);
340
+ padding-inline: var(--tabs-count-space-inline);
341
+ background: var(--tabs-count-background, hsl(var(--muted)));
342
+ color: var(--tabs-count-color, hsl(var(--muted-foreground)));
343
+ font-size: var(--tabs-count-font-size);
344
+ line-height: 1;
345
+ font-variant-numeric: tabular-nums;
346
+ }
347
+
348
+ [data-slot="tabs"][data-variant="card"]
349
+ [data-slot="tabs-trigger"]:not([data-state="active"])
350
+ .ui-tabs-count,
351
+ [data-slot="tabs"][data-variant="editable-card"]
352
+ [data-slot="tabs-trigger"]:not([data-state="active"])
353
+ .ui-tabs-count {
354
+ background: var(--tabs-count-card-background, hsl(var(--background)));
355
+ }
356
+
357
+ [data-slot="tabs-trigger"][data-state="active"] .ui-tabs-count {
358
+ background: var(--tabs-count-active-background, hsl(var(--primary)));
359
+ color: var(--tabs-count-active-color, hsl(var(--primary-foreground)));
360
+ }
361
+
362
+ @media (forced-colors: active) {
363
+ [data-slot="tabs-trigger"][data-state="active"] .ui-tabs-count {
364
+ outline: var(--tabs-count-forced-outline-width) solid currentColor;
365
+ }
366
+ }
367
+
248
368
  .ui-tabs-tab-remove {
249
369
  display: inline-flex;
250
370
  flex: 0 0 auto;
@@ -16,6 +16,7 @@
16
16
  @import "./components/table.css";
17
17
  @import "./components/feedback.css";
18
18
  @import "./components/banner.css";
19
+ @import "./components/callout.css";
19
20
  @import "./components/sheet.css";
20
21
  @import "./components/badge.css";
21
22
  @import "./components/navigation.css";
@@ -0,0 +1,13 @@
1
+
2
+
3
+ :root {
4
+
5
+ --callout-rail-width: var(--space-1);
6
+
7
+ --callout-radius: var(--alert-radius);
8
+
9
+ --callout-space-inset-block: var(--space-3);
10
+ --callout-space-inset-inline: var(--space-4);
11
+
12
+ --callout-space-stack: var(--space-4);
13
+ }
@@ -78,6 +78,24 @@
78
78
  --tabs-card-rail-border-width: var(--stroke-hairline);
79
79
  --tabs-card-background: initial;
80
80
 
81
+ --tabs-panel-background: initial;
82
+ --tabs-panel-border-width: var(--tabs-card-rail-border-width);
83
+ --tabs-panel-radius: var(--tabs-card-radius);
84
+ --tabs-panel-space-inset: var(--space-4);
85
+
86
+ --tabs-count-min-width: var(--space-4);
87
+ --tabs-count-space-inline: var(--space-1);
88
+ --tabs-count-gap: var(--space-1);
89
+ --tabs-count-font-size: var(--font-size-xs);
90
+ --tabs-count-radius: var(--radius-pill);
91
+ --tabs-count-background: initial;
92
+
93
+ --tabs-count-card-background: initial;
94
+ --tabs-count-color: initial;
95
+ --tabs-count-active-background: initial;
96
+ --tabs-count-active-color: initial;
97
+ --tabs-count-forced-outline-width: var(--stroke-hairline);
98
+
81
99
  --tabs-bar-gap: var(--space-2);
82
100
  --tabs-extra-gap: var(--space-2);
83
101
 
@@ -3,8 +3,8 @@
3
3
  > Generated by `scripts/frame-coverage.mjs` (issue #163). Do not edit by hand — run `pnpm check:frame-coverage`.
4
4
  > Standard: [FRAME-COVERAGE-STANDARD.md](./FRAME-COVERAGE-STANDARD.md). A missing dimension is **UNTESTED**, never a pass.
5
5
 
6
- - Public components: **164**
7
- - With ≥1 frame: **143** · zero-frame: **21**
6
+ - Public components: **165**
7
+ - With ≥1 frame: **144** · zero-frame: **21**
8
8
  - Fully covered (every contract axis declared): **0**
9
9
 
10
10
  ## UNTESTED — no `/frame/**` route
@@ -118,6 +118,7 @@ Legend: ✓ covered · N/A reasoned skip · · UNTESTED (blank cell = UNTESTED).
118
118
  | Sheet | ✓ | N/A | N/A | · | · | · | · | · | · | · |
119
119
  | Alert | ✓ | ✓ | N/A | N/A | · | · | · | · | · | · |
120
120
  | Banner | ✓ | ✓ | N/A | N/A | · | · | · | · | · | · |
121
+ | Callout | ✓ | · | N/A | N/A | · | · | · | · | · | · |
121
122
  | SkeletonTable | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
122
123
  | SkeletonRows | **✗** | N/A | N/A | N/A | · | · | · | · | · | · |
123
124
  | Toaster | ✓ | N/A | N/A | N/A | · | · | · | · | · | · |
@@ -130,7 +130,10 @@ export default function Demo() {
130
130
  Badge variant="secondary" と同じ塗り)、shape="pill" が角、count
131
131
  が件数、押下が選択。variant / size / shape はグループに一度だけ書けば context
132
132
  で全アイテムに届く。default や outline
133
- だとチップは押されるまで透明に見えるので、チップ列にはこの組み合わせを使う。
133
+ だとチップは押されるまで透明に見えるので、チップ列にはこの組み合わせを使う。タグ列は
134
+ 件数ぶん伸びて桁を越えるので wrap を付ける(320px
135
+ の桁で計測:無しだと最後のチップが枠の外に 21.41px はみ出し、各ラベルが min-content
136
+ まで潰れて 129.13px · 有りで 3 行 80.00px、scrollWidth 267→212)。
134
137
  </CardDescription>
135
138
  </CardHeader>
136
139
  <CardContent>
@@ -140,6 +143,7 @@ export default function Demo() {
140
143
  variant="soft"
141
144
  shape="pill"
142
145
  size="xs"
146
+ wrap
143
147
  value={tags}
144
148
  onValueChange={setTags}
145
149
  aria-label="タグで絞り込み"
@@ -0,0 +1,220 @@
1
+ import { Callout } from "@godxjp/ui/feedback";
2
+ import {
3
+ Card,
4
+ CardContent,
5
+ CardDescription,
6
+ CardHeader,
7
+ CardTitle,
8
+ Prose,
9
+ } from "@godxjp/ui/data-display";
10
+ import { Flex, PageContainer } from "@godxjp/ui/layout";
11
+
12
+ /**
13
+ * Callout · the aside INSIDE a document body — the Alert primitive with the
14
+ * structural axis fixed to variant="callout". It is the one variant that is NOT a
15
+ * live region: role="note", so a page carrying three of them stays silent on load.
16
+ * kind is the GitHub/Obsidian admonition preset (note/tip/important/warning/caution)
17
+ * and resolves tone + glyph; tone and icon still override per instance. Geometry —
18
+ * the leading rail, the prose insets, the block margin — is owned by the --callout-*
19
+ * tokens, never consumer CSS.
20
+ */
21
+ export default function Demo() {
22
+ return (
23
+ <PageContainer
24
+ title="Callout"
25
+ subtitle="kind × tone × icon · the static aside in prose (the announcing presentations are Alert and Banner)"
26
+ >
27
+ <Flex direction="col" gap="lg">
28
+ <Card>
29
+ <CardHeader>
30
+ <CardTitle level={2}>The five admonitions · every kind</CardTitle>
31
+ <CardDescription>
32
+ GitHub&apos;s documented set, which Obsidian&apos;s lower-case spelling maps onto
33
+ one-for-one. Each kind resolves a tone and its OWN glyph, so the five are told apart
34
+ without colour (WCAG 1.4.1). important takes the neutral tone on purpose. This system
35
+ has no purple role, and borrowing info would make it indistinguishable from note.
36
+ </CardDescription>
37
+ </CardHeader>
38
+ <CardContent>
39
+ <Flex direction="col" gap="md">
40
+ <Callout kind="note">
41
+ <Callout.Title>補足</Callout.Title>
42
+ <Callout.Description>
43
+ この設定は次回のログインから有効になります。
44
+ </Callout.Description>
45
+ </Callout>
46
+ <Callout kind="tip">
47
+ <Callout.Title>ヒント</Callout.Title>
48
+ <Callout.Description>
49
+ ⌘K でどの画面からでもコマンドパレットを開けます。
50
+ </Callout.Description>
51
+ </Callout>
52
+ <Callout kind="important">
53
+ <Callout.Title>重要</Callout.Title>
54
+ <Callout.Description>
55
+ 組織の所有者だけが請求情報を変更できます。
56
+ </Callout.Description>
57
+ </Callout>
58
+ <Callout kind="warning">
59
+ <Callout.Title>注意</Callout.Title>
60
+ <Callout.Description>
61
+ APIキーを再発行すると、既存のキーは直ちに無効になります。
62
+ </Callout.Description>
63
+ </Callout>
64
+ <Callout kind="caution">
65
+ <Callout.Title>警告</Callout.Title>
66
+ <Callout.Description>
67
+ リポジトリを削除すると、Issue と Pull Request
68
+ も一緒に削除されます。この操作は取り消せません。
69
+ </Callout.Description>
70
+ </Callout>
71
+ </Flex>
72
+ </CardContent>
73
+ </Card>
74
+
75
+ <Card>
76
+ <CardHeader>
77
+ <CardTitle level={2}>In prose · what it is actually for</CardTitle>
78
+ <CardDescription>
79
+ A callout is part of the document being read, not an update to it, which is why it
80
+ carries role=&quot;note&quot; and never announces. Read this card with a screen
81
+ reader: the three callouts are reached in document order, and none of them interrupts.
82
+ An Alert in the same place would announce all three the moment the page loaded.
83
+ </CardDescription>
84
+ </CardHeader>
85
+ <CardContent>
86
+ <Prose>
87
+ <h3>APIキーの再発行</h3>
88
+ <p>
89
+ APIキーは組織ごとに発行され、すべての連携サービスで共有されます。ローテーションは四半期ごとを推奨しています。
90
+ </p>
91
+ <Callout kind="tip">
92
+ <Callout.Description>
93
+ 再発行の前に、連携中のサービス一覧を書き出しておくと復旧が早くなります。
94
+ </Callout.Description>
95
+ </Callout>
96
+ <p>
97
+ 再発行すると新しいキーが即座に有効になり、古いキーは同じ瞬間に失効します。猶予期間はありません。
98
+ </p>
99
+ <Callout kind="warning">
100
+ <Callout.Title>停止時間が発生します</Callout.Title>
101
+ <Callout.Description>
102
+ 古いキーを使っている連携は、新しいキーを設定するまで認証に失敗します。
103
+ </Callout.Description>
104
+ </Callout>
105
+ <p>設定画面の「セキュリティ」タブから、いつでも再発行の履歴を確認できます。</p>
106
+ <Callout kind="note">
107
+ <Callout.Description>
108
+ 履歴は90日間保持されます。それより古い記録は監査ログからのみ参照できます。
109
+ </Callout.Description>
110
+ </Callout>
111
+ </Prose>
112
+ </CardContent>
113
+ </Card>
114
+
115
+ <Card>
116
+ <CardHeader>
117
+ <CardTitle level={2}>Title-less · a single paragraph</CardTitle>
118
+ <CardDescription>
119
+ Callout.Title is optional, exactly as on Alert. With one line of copy the glyph and
120
+ the rail carry the kind on their own, and the aside stays the height of its text.
121
+ </CardDescription>
122
+ </CardHeader>
123
+ <CardContent>
124
+ <Flex direction="col" gap="md">
125
+ <Callout kind="note">
126
+ <Callout.Description>
127
+ Rates are shown in the organization&apos;s billing currency, not the viewer&apos;s
128
+ locale.
129
+ </Callout.Description>
130
+ </Callout>
131
+ <Callout kind="caution">
132
+ <Callout.Description>
133
+ Exporting includes personal data; the download link expires after one hour.
134
+ </Callout.Description>
135
+ </Callout>
136
+ </Flex>
137
+ </CardContent>
138
+ </Card>
139
+
140
+ <Card>
141
+ <CardHeader>
142
+ <CardTitle level={2}>Overrides · tone and icon, per instance</CardTitle>
143
+ <CardDescription>
144
+ kind is a preset, not a second colour axis. Pass tone to recolour one aside without
145
+ changing which admonition it is, or icon={false} to drop the glyph entirely. The tone
146
+ vocabulary is the SAME one Alert and Banner use.
147
+ </CardDescription>
148
+ </CardHeader>
149
+ <CardContent>
150
+ <Flex direction="col" gap="md">
151
+ <Callout kind="note" tone="muted">
152
+ <Callout.Title>Quieter than the default note</Callout.Title>
153
+ <Callout.Description>
154
+ tone=&quot;muted&quot; keeps the note glyph and drops the colour to the neutral
155
+ surface.
156
+ </Callout.Description>
157
+ </Callout>
158
+ <Callout kind="important" icon={false}>
159
+ <Callout.Title>Glyphless</Callout.Title>
160
+ <Callout.Description>
161
+ icon={"{false}"} removes the leading glyph; the rail alone carries the tone.
162
+ </Callout.Description>
163
+ </Callout>
164
+ <Callout kind="tip" tone="info">
165
+ <Callout.Title>A tip in the note colour</Callout.Title>
166
+ <Callout.Description>
167
+ The lightbulb stays, so this is still readable as a tip without relying on the
168
+ hue.
169
+ </Callout.Description>
170
+ </Callout>
171
+ </Flex>
172
+ </CardContent>
173
+ </Card>
174
+
175
+ <Card>
176
+ <CardHeader>
177
+ <CardTitle level={2}>Long JA / EN / VI copy · 390px wrapping</CardTitle>
178
+ <CardDescription>
179
+ The text column wraps inside min-width 0 and the rail stays on the START edge in both
180
+ directions (logical properties throughout). Narrow this frame to 390px: nothing clips
181
+ and nothing overflows horizontally.
182
+ </CardDescription>
183
+ </CardHeader>
184
+ <CardContent>
185
+ <Flex direction="col" gap="md">
186
+ <Callout kind="important">
187
+ <Callout.Title>
188
+ ご契約中のプランでは、組織あたりのAPIリクエスト数に上限が設定されており、上限を超えた分は翌月の請求に自動的に加算されます
189
+ </Callout.Title>
190
+ <Callout.Description>
191
+ 現在の消費量は請求ダッシュボードで確認できます。上限の引き上げをご希望の場合は、担当者にご連絡ください。
192
+ </Callout.Description>
193
+ </Callout>
194
+ <Callout kind="caution">
195
+ <Callout.Title>
196
+ Deleting an organization removes every project, dataset and audit record it owns,
197
+ and this cannot be undone by support
198
+ </Callout.Title>
199
+ <Callout.Description>
200
+ Members lose access immediately. Export anything you need to keep before you
201
+ confirm. The deletion runs as soon as the dialog closes.
202
+ </Callout.Description>
203
+ </Callout>
204
+ <Callout kind="tip">
205
+ <Callout.Title>
206
+ Bạn có thể gán vai trò cho cả một nhóm thay vì từng thành viên, và mọi thay đổi về
207
+ thành viên của nhóm sẽ tự động áp dụng
208
+ </Callout.Title>
209
+ <Callout.Description>
210
+ Cách này giữ cho danh sách phân quyền ngắn gọn và dễ kiểm toán hơn nhiều so với
211
+ việc cấp quyền riêng lẻ.
212
+ </Callout.Description>
213
+ </Callout>
214
+ </Flex>
215
+ </CardContent>
216
+ </Card>
217
+ </Flex>
218
+ </PageContainer>
219
+ );
220
+ }