@cdx-ui/components 0.3.0 → 0.3.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 (49) hide show
  1. package/docs/components/bottom-sheet/content.md +2 -2
  2. package/docs/components/carousel/content.md +1 -1
  3. package/docs/components/currency-input/content.md +94 -5
  4. package/docs/components/data-grid/content.md +50 -8
  5. package/docs/components/icon-button/content.md +23 -1
  6. package/docs/components/toast/content.md +23 -7
  7. package/docs/llms.txt +2 -0
  8. package/docs/resources/release-notes/0.3.0/content.md +19 -0
  9. package/docs/resources/release-notes/0.3.1/content.md +13 -0
  10. package/docs/resources/release-notes/content.md +2 -0
  11. package/lib/commonjs/components/BottomSheet/index.js +63 -16
  12. package/lib/commonjs/components/BottomSheet/index.js.map +1 -1
  13. package/lib/commonjs/components/CurrencyInput/index.js +35 -10
  14. package/lib/commonjs/components/CurrencyInput/index.js.map +1 -1
  15. package/lib/commonjs/components/CurrencyInput/styles.js +40 -3
  16. package/lib/commonjs/components/CurrencyInput/styles.js.map +1 -1
  17. package/lib/commonjs/components/IconButton/styles.js +107 -2
  18. package/lib/commonjs/components/IconButton/styles.js.map +1 -1
  19. package/lib/commonjs/components/Toast/index.js +5 -2
  20. package/lib/commonjs/components/Toast/index.js.map +1 -1
  21. package/lib/commonjs/figma/CurrencyInput.figma.js +8 -8
  22. package/lib/commonjs/figma/CurrencyInput.figma.js.map +1 -1
  23. package/lib/module/components/BottomSheet/index.js +64 -17
  24. package/lib/module/components/BottomSheet/index.js.map +1 -1
  25. package/lib/module/components/CurrencyInput/index.js +37 -12
  26. package/lib/module/components/CurrencyInput/index.js.map +1 -1
  27. package/lib/module/components/CurrencyInput/styles.js +38 -3
  28. package/lib/module/components/CurrencyInput/styles.js.map +1 -1
  29. package/lib/module/components/IconButton/styles.js +107 -2
  30. package/lib/module/components/IconButton/styles.js.map +1 -1
  31. package/lib/module/components/Toast/index.js +5 -2
  32. package/lib/module/components/Toast/index.js.map +1 -1
  33. package/lib/module/figma/CurrencyInput.figma.js +8 -8
  34. package/lib/module/figma/CurrencyInput.figma.js.map +1 -1
  35. package/lib/typescript/components/BottomSheet/index.d.ts.map +1 -1
  36. package/lib/typescript/components/CurrencyInput/index.d.ts +4 -1
  37. package/lib/typescript/components/CurrencyInput/index.d.ts.map +1 -1
  38. package/lib/typescript/components/CurrencyInput/styles.d.ts +17 -6
  39. package/lib/typescript/components/CurrencyInput/styles.d.ts.map +1 -1
  40. package/lib/typescript/components/IconButton/styles.d.ts +2 -2
  41. package/lib/typescript/components/IconButton/styles.d.ts.map +1 -1
  42. package/lib/typescript/components/Toast/index.d.ts.map +1 -1
  43. package/lib/typescript/figma/CurrencyInput.figma.d.ts.map +1 -1
  44. package/package.json +5 -5
  45. package/src/components/BottomSheet/index.tsx +88 -13
  46. package/src/components/CurrencyInput/index.tsx +36 -12
  47. package/src/components/CurrencyInput/styles.ts +51 -4
  48. package/src/components/IconButton/styles.ts +111 -0
  49. package/src/components/Toast/index.tsx +13 -3
@@ -310,11 +310,11 @@ Required once at the app root. Wraps the tree to enable modal presentation.
310
310
 
311
311
  ### BottomSheet.ScrollView
312
312
 
313
- Scrollable content wrapper for sheets with long content. Enables footer margin adjustment by default.
313
+ Scrollable content wrapper for sheets with long content. Enables footer margin adjustment by default when the sheet has a footer.
314
314
 
315
315
  ### BottomSheet.View
316
316
 
317
- Non-scrollable content wrapper for fit-to-content sheets. Enables footer margin adjustment by default.
317
+ Non-scrollable content wrapper for fit-to-content sheets. Enables footer margin adjustment by default when the sheet has a footer.
318
318
 
319
319
  ## Hook
320
320
 
@@ -362,7 +362,7 @@ Ghost `IconButton` prev/next controls. Nest inside `Carousel` to read context, o
362
362
  | `accessibilityLargeContentTitle?` | `string` | — | When `accessibilityShowsLargeContentViewer` is set, this string will be used as title for the large content viewer. https://reactnative.dev/docs/accessibility#accessibilitylargecontenttitle |
363
363
  | `accessibilityRespondsToUserInteraction?` | `boolean` | — | Blocks the user from interacting with the component through keyboard while still allowing screen reader to interact with it if this View is still accessible. |
364
364
  | `size?` | `'default' \| 'small' \| null` | — | — |
365
- | `color?` | `'neutral' \| 'action' \| 'danger' \| null` | — | — |
365
+ | `color?` | `'neutral' \| 'action' \| 'danger' \| 'warning' \| 'success' \| 'info' \| null` | — | — |
366
366
  | `iconClassName?` | `string` | — | Passed through to the underlying `Icon`. |
367
367
  | `onHoverIn?` | `((event: MouseEvent) => void) \| null` | — | Called when the hover is activated to provide visual feedback. |
368
368
  | `onHoverOut?` | `((event: MouseEvent) => void) \| null` | — | Called when the hover is deactivated to undo visual feedback. |
@@ -23,9 +23,50 @@ export default function CurrencyInputBasicDemo() {
23
23
  }
24
24
  ```
25
25
 
26
+ ## Variants
27
+
28
+ Use the default `ghost` variant for a large, centered amount that is the focus of the screen. Use `outline` when the amount sits in a form next to other fields: it renders the same bordered shell as `Input`, with the currency symbol as a separate prefix.
29
+
30
+ ```tsx
31
+ import { useState } from 'react';
32
+ import { Box, CurrencyInput, Text, type CurrencyInputProps } from '@cdx-ui/components';
33
+
34
+ const variants = ['ghost', 'outline'] as const satisfies readonly NonNullable<
35
+ CurrencyInputProps['variant']
36
+ >[];
37
+
38
+ function VariantRow({ variant }: { variant: NonNullable<CurrencyInputProps['variant']> }) {
39
+ const [amount, setAmount] = useState(4890);
40
+
41
+ return (
42
+ <Box className="gap-2">
43
+ <Text size="sm" color="secondary">
44
+ {variant}
45
+ </Text>
46
+ <CurrencyInput
47
+ accessibilityLabel={`${variant} transfer amount`}
48
+ variant={variant}
49
+ value={amount}
50
+ onChangeValue={setAmount}
51
+ />
52
+ </Box>
53
+ );
54
+ }
55
+
56
+ export default function CurrencyInputVariantsDemo() {
57
+ return (
58
+ <Box className="w-full gap-4">
59
+ {variants.map((variant) => (
60
+ <VariantRow key={variant} variant={variant} />
61
+ ))}
62
+ </Box>
63
+ );
64
+ }
65
+ ```
66
+
26
67
  ## Sizes
27
68
 
28
- Use `size="small"` when the amount appears alongside other form fields.
69
+ Use `size="small"` for a more compact amount. When the amount appears alongside other form fields, use `variant="outline"` instead so it matches them.
29
70
 
30
71
  ```tsx
31
72
  import { useState } from 'react';
@@ -121,7 +162,26 @@ export default function CurrencyInputStatesDemo() {
121
162
 
122
163
  ## With field
123
164
 
124
- Compose with `Field` to provide a visible label, helper text, and required state.
165
+ Compose with `Field` to provide a visible label, helper text, and required state. In a form, use `variant="outline"` with the label and helper aligned to the start, as with `Input`.
166
+
167
+ ```tsx
168
+ import { useState } from 'react';
169
+ import { CurrencyInput, Field } from '@cdx-ui/components';
170
+
171
+ export default function CurrencyInputOutlineWithFieldDemo() {
172
+ const [amount, setAmount] = useState(0);
173
+
174
+ return (
175
+ <Field className="w-full" isRequired>
176
+ <Field.Label>Amount</Field.Label>
177
+ <CurrencyInput isRequired variant="outline" value={amount} onChangeValue={setAmount} />
178
+ <Field.Helper>Daily limit remaining: $1,200</Field.Helper>
179
+ </Field>
180
+ );
181
+ }
182
+ ```
183
+
184
+ For the `ghost` pattern, center the label and helper over the amount.
125
185
 
126
186
  ```tsx
127
187
  import { useState } from 'react';
@@ -150,6 +210,34 @@ import { CurrencyInput, Field } from '@cdx-ui/components';
150
210
 
151
211
  const DAILY_LIMIT = 1200;
152
212
 
213
+ export default function CurrencyInputOutlineWithFieldInvalidDemo() {
214
+ const [amount, setAmount] = useState(1500);
215
+ const isInvalid = amount > DAILY_LIMIT;
216
+
217
+ return (
218
+ <Field className="w-full" isRequired isInvalid={isInvalid}>
219
+ <Field.Label>Amount</Field.Label>
220
+ <CurrencyInput
221
+ isInvalid={isInvalid}
222
+ isRequired
223
+ variant="outline"
224
+ value={amount}
225
+ onChangeValue={setAmount}
226
+ />
227
+ <Field.Error>Amount exceeds your daily limit.</Field.Error>
228
+ </Field>
229
+ );
230
+ }
231
+ ```
232
+
233
+ The same validation in the `ghost` pattern, with a centered label and error.
234
+
235
+ ```tsx
236
+ import { useState } from 'react';
237
+ import { CurrencyInput, Field } from '@cdx-ui/components';
238
+
239
+ const DAILY_LIMIT = 1200;
240
+
153
241
  export default function CurrencyInputWithFieldInvalidDemo() {
154
242
  const [amount, setAmount] = useState(1500);
155
243
  const isInvalid = amount > DAILY_LIMIT;
@@ -181,14 +269,15 @@ Controlled calculator-style monetary entry. The numeric `value` is expressed in
181
269
  | `className?` | `string` | — | — |
182
270
  | `value?` | `number` | — | Current amount in major currency units, not cents. Renders a formatted zero when omitted or null. |
183
271
  | `style?` | `StyleProp<ViewStyle>` | — | — |
184
- | `size?` | `'default' \| 'small' \| null` | — | — |
185
272
  | `onChangeValue?` | `((value: number) => void)` | — | Called with the parsed amount in major currency units, not cents, when the user edits the field. |
186
- | `currencySymbol?` | `string` | — | Currency symbol rendered as an inline prefix. Defaults to `"$"`. |
273
+ | `currencySymbol?` | `string` | — | Currency symbol shown before the amount. Defaults to `"$"`. Part of the field text in `ghost`; a separate, non-editable prefix in `outline`. |
187
274
  | `isInvalid?` | `boolean` | — | If true, the input will indicate an error. |
188
275
  | `isDisabled?` | `boolean` | — | If true, the input will be disabled. |
189
276
  | `isRequired?` | `boolean` | — | Sets `aria-required="true"` on web when passed in form control. |
190
277
  | `isReadOnly?` | `boolean` | — | If true, prevents the value of the input from being edited. |
191
278
  | `isFullWidth?` | `boolean` | — | If true, the input element will span the full width of its parent. |
279
+ | `variant?` | `'ghost' \| 'outline'` | `'ghost'` | Visual style. `ghost` is the large, centered, borderless amount entry; `outline` renders the bordered `Input` shell with a leading currency-symbol prefix, for amounts that sit alongside other form fields. |
280
+ | `size?` | `'default' \| 'small'` | `'default'` | Height, padding, and text size. |
192
281
 
193
282
  Supports `accessibilityLabel`, `accessibilityHint`, `testID`, `onFocus`, `onBlur`, and `returnKeyType` from [`TextInputProps`](https://reactnative.dev/docs/textinput#props). `style` applies to the root container, and the forwarded ref targets the underlying `TextInput`.
194
283
 
@@ -201,5 +290,5 @@ Only digits contribute to the amount. Each new digit appends to the cents value,
201
290
  | Item | Behavior |
202
291
  | --------------- | ------------------------------------------------------------------------------------ |
203
292
  | Accessible name | Compose with `Field.Label` or pass `accessibilityLabel` directly. |
204
- | Value | `accessibilityValue.text` contains the fully formatted amount. |
293
+ | Value | `accessibilityValue.text` contains the fully formatted amount, including the symbol. |
205
294
  | Validation | Pair `isInvalid` with `Field.Error` so the error is not communicated by color alone. |
@@ -334,12 +334,14 @@ export default function DataGridSelectionDemo() {
334
334
 
335
335
  ## Server data
336
336
 
337
- Set `paginationMode="server"` and `sortingMode="server"` to let your data source own those operations. Keep the models controlled, pass the current page in `rows`, and provide the full `rowCount`.
337
+ Set `paginationMode="server"` and `sortingMode="server"` to let your data source own those operations. `filterMode` follows `paginationMode` unless you set it, so server pagination also means server filtering. Keep the models controlled, pass the current page in `rows`, and provide the full `rowCount` of matching rows.
338
338
 
339
- Server-side filtering is not supported yet. Do not combine quick or header filters with server-paged rows; those filters only inspect the current `rows` array.
339
+ With server filtering, search and header filters no longer filter `rows`. Send `quickFilter` and `filterModel` to your data source instead. Both change on every keystroke, so debounce the request and return to page 0 when the debounced query changes, as this demo does. Passing `filterMode="client"` with server pagination filters only the current page of `rows`.
340
+
341
+ `GridFilterItem` will gain an optional `operator` field, defaulting to `'contains'`, in a future minor release. Existing `{ field, value }` items keep working, so server handlers should treat a missing `operator` as `'contains'`.
340
342
 
341
343
  ```tsx
342
- import { useState } from 'react';
344
+ import { useEffect, useMemo, useState } from 'react';
343
345
  import {
344
346
  DataGrid,
345
347
  type GridColDef,
@@ -366,8 +368,23 @@ const columns: GridColDef<Account>[] = [
366
368
  },
367
369
  ];
368
370
 
369
- function queryAccounts(paginationModel: GridPaginationModel, sortModel: GridSortModel): Account[] {
370
- const sortedRows = [...accounts];
371
+ // Mirrors the client quick filter: every filterable column's raw (unformatted) value,
372
+ // matched as a case-insensitive substring.
373
+ const searchableFields = columns
374
+ .filter((column) => column.filterable !== false)
375
+ .map((column) => column.field as keyof Account);
376
+
377
+ const SEARCH_DEBOUNCE_MS = 300;
378
+
379
+ function queryAccounts(
380
+ search: string,
381
+ paginationModel: GridPaginationModel,
382
+ sortModel: GridSortModel,
383
+ ): { rows: Account[]; rowCount: number } {
384
+ const needle = search.toLowerCase();
385
+ const sortedRows = accounts.filter((account) =>
386
+ searchableFields.some((field) => String(account[field]).toLowerCase().includes(needle)),
387
+ );
371
388
  const activeSort = sortModel.length > 0 ? sortModel[0] : undefined;
372
389
 
373
390
  if (activeSort) {
@@ -383,7 +400,10 @@ function queryAccounts(paginationModel: GridPaginationModel, sortModel: GridSort
383
400
  }
384
401
 
385
402
  const start = paginationModel.page * paginationModel.pageSize;
386
- return sortedRows.slice(start, start + paginationModel.pageSize);
403
+ return {
404
+ rows: sortedRows.slice(start, start + paginationModel.pageSize),
405
+ rowCount: sortedRows.length,
406
+ };
387
407
  }
388
408
 
389
409
  export default function DataGridServerDataDemo() {
@@ -392,15 +412,37 @@ export default function DataGridServerDataDemo() {
392
412
  pageSize: 5,
393
413
  });
394
414
  const [sortModel, setSortModel] = useState<GridSortModel>([]);
395
- const rows = queryAccounts(paginationModel, sortModel);
415
+ const [search, setSearch] = useState('');
416
+ const [debouncedSearch, setDebouncedSearch] = useState('');
417
+
418
+ useEffect(() => {
419
+ if (search === debouncedSearch) {
420
+ return;
421
+ }
422
+ const timeout = setTimeout(() => {
423
+ setDebouncedSearch(search);
424
+ // The user may have paged during the debounce; a new result set always starts on page 0.
425
+ setPaginationModel((current) => (current.page === 0 ? current : { ...current, page: 0 }));
426
+ }, SEARCH_DEBOUNCE_MS);
427
+ return () => clearTimeout(timeout);
428
+ }, [search, debouncedSearch]);
429
+
430
+ const { rows, rowCount } = useMemo(
431
+ () => queryAccounts(debouncedSearch, paginationModel, sortModel),
432
+ [debouncedSearch, paginationModel, sortModel],
433
+ );
396
434
 
397
435
  return (
398
436
  <DataGrid
399
437
  rows={rows}
400
438
  columns={columns}
401
- rowCount={accounts.length}
439
+ rowCount={rowCount}
402
440
  paginationMode="server"
403
441
  sortingMode="server"
442
+ filterMode="server"
443
+ showToolbar
444
+ quickFilter={search}
445
+ onQuickFilterChange={setSearch}
404
446
  paginationModel={paginationModel}
405
447
  onPaginationModelChange={setPaginationModel}
406
448
  sortModel={sortModel}
@@ -37,6 +37,9 @@ export default function IconButtonSolidDemo() {
37
37
  <IconButton as={ArrowCircleUp} color="neutral" accessibilityLabel="Neutral" />
38
38
  <IconButton as={ArrowCircleUp} color="action" accessibilityLabel="Action" />
39
39
  <IconButton as={ArrowCircleUp} color="danger" accessibilityLabel="Danger" />
40
+ <IconButton as={ArrowCircleUp} color="warning" accessibilityLabel="Warning" />
41
+ <IconButton as={ArrowCircleUp} color="success" accessibilityLabel="Success" />
42
+ <IconButton as={ArrowCircleUp} color="info" accessibilityLabel="Info" />
40
43
  </Box>
41
44
  );
42
45
  }
@@ -59,6 +62,19 @@ export default function IconButtonSubtleDemo() {
59
62
  />
60
63
  <IconButton as={ArrowCircleUp} variant="subtle" color="action" accessibilityLabel="Action" />
61
64
  <IconButton as={ArrowCircleUp} variant="subtle" color="danger" accessibilityLabel="Danger" />
65
+ <IconButton
66
+ as={ArrowCircleUp}
67
+ variant="subtle"
68
+ color="warning"
69
+ accessibilityLabel="Warning"
70
+ />
71
+ <IconButton
72
+ as={ArrowCircleUp}
73
+ variant="subtle"
74
+ color="success"
75
+ accessibilityLabel="Success"
76
+ />
77
+ <IconButton as={ArrowCircleUp} variant="subtle" color="info" accessibilityLabel="Info" />
62
78
  </Box>
63
79
  );
64
80
  }
@@ -76,6 +92,9 @@ export default function IconButtonGhostDemo() {
76
92
  <IconButton as={ArrowCircleUp} variant="ghost" color="neutral" accessibilityLabel="Neutral" />
77
93
  <IconButton as={ArrowCircleUp} variant="ghost" color="action" accessibilityLabel="Action" />
78
94
  <IconButton as={ArrowCircleUp} variant="ghost" color="danger" accessibilityLabel="Danger" />
95
+ <IconButton as={ArrowCircleUp} variant="ghost" color="warning" accessibilityLabel="Warning" />
96
+ <IconButton as={ArrowCircleUp} variant="ghost" color="success" accessibilityLabel="Success" />
97
+ <IconButton as={ArrowCircleUp} variant="ghost" color="info" accessibilityLabel="Info" />
79
98
  </Box>
80
99
  );
81
100
  }
@@ -93,6 +112,9 @@ export default function IconButtonColorsDemo() {
93
112
  <IconButton as={ArrowCircleUp} color="neutral" accessibilityLabel="Neutral" />
94
113
  <IconButton as={ArrowCircleUp} color="action" accessibilityLabel="Action" />
95
114
  <IconButton as={ArrowCircleUp} color="danger" accessibilityLabel="Danger" />
115
+ <IconButton as={ArrowCircleUp} color="warning" accessibilityLabel="Warning" />
116
+ <IconButton as={ArrowCircleUp} color="success" accessibilityLabel="Success" />
117
+ <IconButton as={ArrowCircleUp} color="info" accessibilityLabel="Info" />
96
118
  </Box>
97
119
  );
98
120
  }
@@ -176,7 +198,7 @@ export default function IconButtonAsLinkDemo() {
176
198
  | `children?` | `React.ReactNode \| ((state: PressableStateCallbackType) => React.ReactNode)` | — | Either children or a render prop that receives a boolean reflecting whether the component is currently pressed. |
177
199
  | `size?` | `'default' \| 'small' \| null` | — | — |
178
200
  | `variant?` | `'solid' \| 'subtle' \| 'ghost' \| 'tint'` | `'solid'` | Visual style variant. |
179
- | `color?` | `'neutral' \| 'action' \| 'danger' \| null` | — | — |
201
+ | `color?` | `'neutral' \| 'action' \| 'danger' \| 'warning' \| 'success' \| 'info' \| null` | — | — |
180
202
  | `as` | `ForgeIcon` | — | Forge icon component to render (icon-only control). |
181
203
  | `iconClassName?` | `string` | — | Passed through to the underlying `Icon`. |
182
204
  | `isDisabled?` | `boolean` | — | If true, the button will be disabled. |
@@ -42,13 +42,24 @@ export default function ToastBasicDemo() {
42
42
 
43
43
  ## Colors
44
44
 
45
- `color` sets the surface fill and the title, description, and icon. `neutral` is a dark inverse surface; status values use the matching subtle fill and on-subtle content color.
45
+ `color` sets the surface fill and the title, description, icon, and close control. `neutral` is a dark inverse surface; status values use the matching subtle fill and on-subtle content color. On a `neutral` toast the close glyph keeps the inverse stand-in so it stays legible on the dark surface.
46
46
 
47
47
  ```tsx
48
- import { Button, HStack, useToast, type ToastColor } from '@cdx-ui/components';
48
+ import { Button, HStack, Toast, useToast, type ToastComponentProps } from '@cdx-ui/components';
49
+ import { CheckCircle, ErrorIcon, InfoIcon, WarningIcon } from '@cdx-ui/icons';
50
+
51
+ const COLOR_ICONS = {
52
+ neutral: InfoIcon,
53
+ info: InfoIcon,
54
+ success: CheckCircle,
55
+ warning: WarningIcon,
56
+ danger: ErrorIcon,
57
+ } as const;
58
+
59
+ type ToastSemanticColor = keyof typeof COLOR_ICONS;
49
60
 
50
61
  const scenarios: {
51
- color: ToastColor;
62
+ color: ToastSemanticColor;
52
63
  buttonColor: 'action' | 'danger' | 'warning' | 'success';
53
64
  label: string;
54
65
  description: string;
@@ -97,9 +108,14 @@ export default function ToastColorsDemo() {
97
108
  color={scenario.buttonColor}
98
109
  onPress={() =>
99
110
  toast.show({
100
- color: scenario.color,
101
- label: scenario.label,
102
- description: scenario.description,
111
+ component: (props: ToastComponentProps) => (
112
+ <Toast {...props} color={scenario.color}>
113
+ <Toast.Icon as={COLOR_ICONS[scenario.color]} />
114
+ <Toast.Title>{scenario.label}</Toast.Title>
115
+ <Toast.Description>{scenario.description}</Toast.Description>
116
+ <Toast.Close />
117
+ </Toast>
118
+ ),
103
119
  })
104
120
  }
105
121
  >
@@ -374,7 +390,7 @@ Action control rendered as a [`Button`](https://design.candescent.com/docs/compo
374
390
 
375
391
  ### Toast.Close
376
392
 
377
- Dismiss control rendered as an [`IconButton`](https://design.candescent.com/docs/components/icon-button/content.md) and accepting all of its props except `as`, which is narrowed to a `ForgeIcon`. Defaults to `variant="ghost"`, `size="small"`, `aria-label="Close"`, and the close glyph. Pressing it hides the parent toast, so no `onPress` is required; a supplied `onPress` runs in addition.
393
+ Dismiss control rendered as an [`IconButton`](https://design.candescent.com/docs/components/icon-button/content.md) and accepting all of its props except `as`, which is narrowed to a `ForgeIcon`. Defaults to `variant="ghost"`, `size="small"`, `aria-label="Close"`, and the close glyph. With no `color` of its own it follows the parent toast's `color`; on a `neutral` toast that uses an inverse stand-in for the glyph and hover so they stay legible on the dark surface, and an explicit `color` still wins. Pressing it hides the parent toast, so no `onPress` is required; a supplied `onPress` runs in addition.
378
394
 
379
395
  ## Hook
380
396
 
package/docs/llms.txt CHANGED
@@ -138,6 +138,8 @@ Links point at each page's `content.md`, which carries the page's prose, demo so
138
138
 
139
139
  ## Release notes
140
140
 
141
+ - [0.3.1](resources/release-notes/0.3.1/content.md): DataGrid adds filterMode for server-side search and filters; IconButton adds warning, success, and info color options.
142
+ - [0.3.0](resources/release-notes/0.3.0/content.md): Calendar and MonthCalendar year pickers scroll the full selectable range; BottomSheet adds fullBleed and updated Content and Footer padding.
141
143
  - [0.2.5](resources/release-notes/0.2.5/content.md): Box is the supported layout primitive with hardened stacks; View from @cdx-ui/components is deprecated. Align Expo apps with SDK 57 and React Native 0.86.
142
144
  - [0.2.4](resources/release-notes/0.2.4/content.md): ScrollShadow fades scroll edges on iOS, Android, and web; ListItem.SectionHeader adds a gradient variant for account-style lists.
143
145
  - [0.2.3](resources/release-notes/0.2.3/content.md): ReorderableList brings drag-and-drop list reordering on web and native; Tile flat rows show the selected background again.
@@ -0,0 +1,19 @@
1
+ # 0.3.0 (https://design.candescent.com/docs/resources/release-notes/0.3.0)
2
+
3
+ Calendar and MonthCalendar year pickers scroll the full selectable range; BottomSheet adds fullBleed and updated Content and Footer padding.
4
+
5
+ This release improves year selection in the calendar family and updates **[BottomSheet](https://design.candescent.com/docs/components/bottom-sheet/content.md)** layout padding and bleed options.
6
+
7
+ ## What's new
8
+
9
+ **[BottomSheet](https://design.candescent.com/docs/components/bottom-sheet/content.md)** — `BottomSheet.Modal` and `BottomSheet.Content` accept `fullBleed` so edge-to-edge content can drop horizontal padding, matching the design full-bleed variant. Set `fullBleed` on the modal to pass the behavior through to content, or override it on `Content` when you need mixed layouts ([#811](https://github.com/dfh-candescent/forge-design-system/pull/811)).
10
+
11
+ ## Bug fixes
12
+
13
+ **[Calendar](https://design.candescent.com/docs/components/calendar/content.md)**, **[MonthCalendar](https://design.candescent.com/docs/components/month-calendar/content.md)**, and **[RangeCalendar](https://design.candescent.com/docs/components/range-calendar/content.md)** — The year view scrolls across every year between `minValue` and `maxValue` (defaulting to a wide range when a bound is unset) instead of a short fixed window, opens scrolled to the current year, and keeps header navigation mounted so the header height stays stable in year view ([#812](https://github.com/dfh-candescent/forge-design-system/pull/812)).
14
+
15
+ **[BottomSheet](https://design.candescent.com/docs/components/bottom-sheet/content.md)** — `Content` and `Footer` horizontal padding matches the design spec ([#811](https://github.com/dfh-candescent/forge-design-system/pull/811)).
16
+
17
+ ## Dependencies
18
+
19
+ **@cdx-ui/\*** — Upgrade every installed Forge UI package to `0.3.0` together when you adopt this release.
@@ -0,0 +1,13 @@
1
+ # 0.3.1 (https://design.candescent.com/docs/resources/release-notes/0.3.1)
2
+
3
+ DataGrid adds filterMode for server-side search and filters; IconButton adds warning, success, and info color options.
4
+
5
+ This release extends **DataGrid** for server-driven filtering and adds status-colored variants to **[IconButton](https://design.candescent.com/docs/components/icon-button/content.md)** and **[Toast](https://design.candescent.com/docs/components/toast/content.md)**.
6
+
7
+ ## What's new
8
+
9
+ **DataGrid** — Set `filterMode="server"` when pagination or sorting already runs on the server so quick search and column filters no longer run only against the rows on the current page. The grid emits `quickFilter` and `filterModel` changes and leaves filtering to your data source; `filterMode` defaults to match `paginationMode`, so server pagination does not silently filter a single page. `GridFilterItem.operator` is optional and defaults to `contains` ([#813](https://github.com/dfh-candescent/forge-design-system/pull/813)).
10
+
11
+ **[IconButton](https://design.candescent.com/docs/components/icon-button/content.md)** — `color` accepts `warning`, `success`, and `info` across solid, subtle, and ghost variants so icon actions can match semantic status without custom styling ([#793](https://github.com/dfh-candescent/forge-design-system/pull/793)).
12
+
13
+ **[Toast](https://design.candescent.com/docs/components/toast/content.md)** — The close control uses the toast’s semantic color so dismiss actions stay visually aligned with warning, success, info, and error toasts ([#793](https://github.com/dfh-candescent/forge-design-system/pull/793)).
@@ -8,6 +8,8 @@ Notes are generated from the release commit itself, so the versions and commit r
8
8
  each entry are exact. Releases that contained nothing but backlog or dependency bookkeeping
9
9
  are omitted.
10
10
 
11
+ - [0.3.1](https://design.candescent.com/docs/resources/release-notes/0.3.1/content.md) — 2026-10-13 — DataGrid adds filterMode for server-side search and filters; IconButton adds warning, success, and info color options.
12
+ - [0.3.0](https://design.candescent.com/docs/resources/release-notes/0.3.0/content.md) — 2026-10-13 — Calendar and MonthCalendar year pickers scroll the full selectable range; BottomSheet adds fullBleed and updated Content and Footer padding.
11
13
  - [0.2.5](https://design.candescent.com/docs/resources/release-notes/0.2.5/content.md) — 2026-10-12 — Box is the supported layout primitive with hardened stacks; View from @cdx-ui/components is deprecated. Align Expo apps with SDK 57 and React Native 0.86.
12
14
  - [0.2.4](https://design.candescent.com/docs/resources/release-notes/0.2.4/content.md) — 2026-10-09 — ScrollShadow fades scroll edges on iOS, Android, and web; ListItem.SectionHeader adds a gradient variant for account-style lists.
13
15
  - [0.2.3](https://design.candescent.com/docs/resources/release-notes/0.2.3/content.md) — 2026-10-08 — ReorderableList brings drag-and-drop list reordering on web and native; Tile flat rows show the selected background again.
@@ -18,7 +18,38 @@ var _styles = require("./styles");
18
18
  var _jsxRuntime = require("react/jsx-runtime");
19
19
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
20
  const SCOPE = 'BOTTOM_SHEET';
21
- const useBottomSheetStyleContext = () => (0, _utils.useStyleContext)(SCOPE) ?? {};
21
+ const useBottomSheetScopeContext = () => (0, _utils.useStyleContext)(SCOPE);
22
+ const useBottomSheetStyleContext = () => useBottomSheetScopeContext() ?? {};
23
+ const IS_WEB = _reactNative.Platform.OS === 'web';
24
+
25
+ /**
26
+ * Resolves how a content wrapper reserves room for the footer.
27
+ *
28
+ * gorhom's footer margin adjustment is unsound on web: its reaction first runs with the
29
+ * unmeasured footer sentinel (-999) and adds it to `contentHeight`, then never adds the real
30
+ * footer height. Depending on whether content measures first, a dynamically sized sheet either
31
+ * parks below its container or opens with the footer covering its content. It cannot be fixed
32
+ * with padding because react-native-web only re-reports layout when the content box resizes.
33
+ *
34
+ * So on web, when the sheet's `footer` prop is measured here, a spacer child of the footer's
35
+ * height replaces gorhom's adjustment; its layout lands in the content measurement in any
36
+ * order. With no footer there is nothing to adjust. Otherwise (native, a raw gorhom
37
+ * `footerComponent`, or outside a `BottomSheet.Modal`) gorhom's adjustment is kept.
38
+ */
39
+ function useFooterMargin(enableFooterMarginAdjustment) {
40
+ const scope = useBottomSheetScopeContext();
41
+ const enabled = enableFooterMarginAdjustment ?? scope?.hasFooter ?? true;
42
+ const spacerHeight = enabled && IS_WEB ? scope?.footerHeight : undefined;
43
+ return {
44
+ enableFooterMarginAdjustment: enabled && spacerHeight === undefined,
45
+ spacer: spacerHeight ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
46
+ style: {
47
+ height: spacerHeight
48
+ },
49
+ pointerEvents: "none"
50
+ }) : null
51
+ };
52
+ }
22
53
  const ZERO_INSETS = {
23
54
  top: 0,
24
55
  bottom: 0,
@@ -137,16 +168,29 @@ const BottomSheetModalStyled = /*#__PURE__*/(0, _react.forwardRef)(({
137
168
  ...rest
138
169
  }, ref) => {
139
170
  const parent = (0, _utils.useParentContext)();
171
+ const hasFooter = footer != null || rest.footerComponent != null;
172
+ const measuresFooter = IS_WEB && footer != null;
173
+ const [measuredFooterHeight, setMeasuredFooterHeight] = (0, _react.useState)(0);
174
+ const footerHeight = measuresFooter ? measuredFooterHeight : undefined;
140
175
  const ctx = (0, _react.useMemo)(() => ({
141
176
  ...parent,
142
177
  [SCOPE]: {
143
- fullBleed
178
+ fullBleed,
179
+ hasFooter,
180
+ footerHeight
144
181
  }
145
- }), [parent, fullBleed]);
182
+ }), [parent, fullBleed, hasFooter, footerHeight]);
183
+ const handleFooterLayout = (0, _react.useCallback)(event => {
184
+ setMeasuredFooterHeight(event.nativeEvent.layout.height);
185
+ }, []);
146
186
  const renderFooter = (0, _react.useCallback)(props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.BottomSheetFooter, {
147
187
  ...props,
148
- children: footer
149
- }), [footer]);
188
+ children: measuresFooter ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
189
+ onLayout: handleFooterLayout,
190
+ pointerEvents: "box-none",
191
+ children: footer
192
+ }) : footer
193
+ }), [footer, handleFooterLayout, measuresFooter]);
150
194
  const modalRef = (0, _react.useRef)(null);
151
195
  const dismissedRef = (0, _react.useRef)(false);
152
196
  const sheetMountedRef = (0, _react.useRef)(false);
@@ -274,35 +318,37 @@ const BottomSheetModalStyled = /*#__PURE__*/(0, _react.forwardRef)(({
274
318
  BottomSheetModalStyled.displayName = 'BottomSheet.Modal';
275
319
 
276
320
  // =============================================================================
277
- // SCROLLVIEW WRAPPER (with footer margin adjustment enabled by default)
321
+ // SCROLLVIEW WRAPPER (reserves room for the sheet's footer by default)
278
322
  // =============================================================================
279
323
 
280
324
  function BottomSheetScrollViewStyled({
281
- enableFooterMarginAdjustment = true,
325
+ enableFooterMarginAdjustment,
282
326
  children,
283
327
  ...rest
284
328
  }) {
285
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.BottomSheetScrollView, {
286
- enableFooterMarginAdjustment: enableFooterMarginAdjustment,
329
+ const footerMargin = useFooterMargin(enableFooterMarginAdjustment);
330
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_bottomSheet.BottomSheetScrollView, {
331
+ enableFooterMarginAdjustment: footerMargin.enableFooterMarginAdjustment,
287
332
  ...rest,
288
- children: children
333
+ children: [children, footerMargin.spacer]
289
334
  });
290
335
  }
291
336
  BottomSheetScrollViewStyled.displayName = 'BottomSheet.ScrollView';
292
337
 
293
338
  // =============================================================================
294
- // VIEW WRAPPER (with footer margin adjustment enabled by default)
339
+ // VIEW WRAPPER (reserves room for the sheet's footer by default)
295
340
  // =============================================================================
296
341
 
297
342
  function BottomSheetViewStyled({
298
- enableFooterMarginAdjustment = true,
343
+ enableFooterMarginAdjustment,
299
344
  children,
300
345
  ...rest
301
346
  }) {
302
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_bottomSheet.BottomSheetView, {
303
- enableFooterMarginAdjustment: enableFooterMarginAdjustment,
347
+ const footerMargin = useFooterMargin(enableFooterMarginAdjustment);
348
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_bottomSheet.BottomSheetView, {
349
+ enableFooterMarginAdjustment: footerMargin.enableFooterMarginAdjustment,
304
350
  ...rest,
305
- children: children
351
+ children: [children, footerMargin.spacer]
306
352
  });
307
353
  }
308
354
  BottomSheetViewStyled.displayName = 'BottomSheet.View';
@@ -360,8 +406,9 @@ function useBottomSheet() {
360
406
  * ```
361
407
  */
362
408
  function useBottomSheetScrollable() {
409
+ const enableFooterMarginAdjustment = useBottomSheetScopeContext()?.hasFooter ?? true;
363
410
  return (0, _bottomSheet.useBottomSheetScrollableCreator)({
364
- enableFooterMarginAdjustment: true
411
+ enableFooterMarginAdjustment
365
412
  });
366
413
  }
367
414
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uniwind","_bottomSheet","_primitives","_utils","_sheetHeader","_styles","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SCOPE","useBottomSheetStyleContext","useStyleContext","ZERO_INSETS","top","bottom","left","right","useSafeInsets","useContext","SafeAreaInsetsContext","BottomSheetHeader","forwardRef","title","subtitle","children","className","onClose","closeAccessibilityLabel","onBack","backAccessibilityLabel","ref","jsx","SheetHeader","displayName","BottomSheetContent","hasSafeAreaInset","fullBleed","style","insets","fullBleedFromContext","computedClassName","cn","bottomSheetContentVariants","View","paddingBottom","pointerEvents","BottomSheetFooter","bottomSheetFooterVariants","Math","max","MAX_DYNAMIC_CONTENT_SIZE","Dimensions","height","CustomBackdrop","props","BottomSheetBackdrop","disappearsOnIndex","appearsOnIndex","opacity","pressBehavior","CustomBackground","bottomSheetBackgroundClassName","BottomSheetModalStyled","handleVisible","footer","onDismiss","onChange","onAnimate","rest","parent","useParentContext","ctx","useMemo","renderFooter","useCallback","modalRef","useRef","dismissedRef","sheetMountedRef","mountPendingRef","pendingDismissRef","presented","setPresented","useState","setModalRef","instance","current","dismissSheet","args","dismiss","markSheetMounted","pendingDismiss","useImperativeHandle","present","snapToIndex","snapToPosition","expand","collapse","close","forceClose","handleDismiss","handleChange","handleAnimate","id","useId","overlayId","useEscapeKey","groupId","layer","isTopmost","useOverlayStackRegistration","active","Platform","OS","capabilities","useEffect","backHandler","BackHandler","addEventListener","remove","sheetContainerStyle","useResolveClassNames","bottomSheetModalContainerClassName","handleIndicatorStyle","BottomSheetModal","enableDynamicSizing","maxDynamicContentSize","handleComponent","undefined","backdropComponent","backgroundComponent","footerComponent","ParentContext","Provider","value","BottomSheetScrollViewStyled","enableFooterMarginAdjustment","BottomSheetScrollView","BottomSheetViewStyled","BottomSheetView","BottomSheetModalProvider","BottomSheet","exports","Modal","Header","Content","Footer","ScrollView","useBottomSheet","useBottomSheetScrollable","useBottomSheetScrollableCreator"],"sourceRoot":"../../../../src","sources":["components/BottomSheet/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uniwind","_bottomSheet","_primitives","_utils","_sheetHeader","_styles","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SCOPE","useBottomSheetScopeContext","useStyleContext","useBottomSheetStyleContext","IS_WEB","Platform","OS","useFooterMargin","enableFooterMarginAdjustment","scope","enabled","hasFooter","spacerHeight","footerHeight","undefined","spacer","jsx","View","style","height","pointerEvents","ZERO_INSETS","top","bottom","left","right","useSafeInsets","useContext","SafeAreaInsetsContext","BottomSheetHeader","forwardRef","title","subtitle","children","className","onClose","closeAccessibilityLabel","onBack","backAccessibilityLabel","ref","SheetHeader","displayName","BottomSheetContent","hasSafeAreaInset","fullBleed","insets","fullBleedFromContext","computedClassName","cn","bottomSheetContentVariants","paddingBottom","BottomSheetFooter","bottomSheetFooterVariants","Math","max","MAX_DYNAMIC_CONTENT_SIZE","Dimensions","CustomBackdrop","props","BottomSheetBackdrop","disappearsOnIndex","appearsOnIndex","opacity","pressBehavior","CustomBackground","bottomSheetBackgroundClassName","BottomSheetModalStyled","handleVisible","footer","onDismiss","onChange","onAnimate","rest","parent","useParentContext","footerComponent","measuresFooter","measuredFooterHeight","setMeasuredFooterHeight","useState","ctx","useMemo","handleFooterLayout","useCallback","event","nativeEvent","layout","renderFooter","onLayout","modalRef","useRef","dismissedRef","sheetMountedRef","mountPendingRef","pendingDismissRef","presented","setPresented","setModalRef","instance","current","dismissSheet","args","dismiss","markSheetMounted","pendingDismiss","useImperativeHandle","present","snapToIndex","snapToPosition","expand","collapse","close","forceClose","handleDismiss","handleChange","handleAnimate","id","useId","overlayId","useEscapeKey","groupId","layer","isTopmost","useOverlayStackRegistration","active","capabilities","useEffect","backHandler","BackHandler","addEventListener","remove","sheetContainerStyle","useResolveClassNames","bottomSheetModalContainerClassName","handleIndicatorStyle","BottomSheetModal","enableDynamicSizing","maxDynamicContentSize","handleComponent","backdropComponent","backgroundComponent","ParentContext","Provider","value","BottomSheetScrollViewStyled","footerMargin","jsxs","BottomSheetScrollView","BottomSheetViewStyled","BottomSheetView","BottomSheetModalProvider","BottomSheet","exports","Modal","Header","Content","Footer","ScrollView","useBottomSheet","useBottomSheetScrollable","useBottomSheetScrollableCreator"],"sourceRoot":"../../../../src","sources":["components/BottomSheet/index.tsx"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAYA,IAAAC,YAAA,GAAAD,OAAA;AAQA,IAAAE,2BAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAYA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,MAAA,GAAAN,OAAA;AACA,IAAAO,YAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AAMkB,IAAAS,WAAA,GAAAT,OAAA;AAAA,SAAAD,wBAAAW,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAb,uBAAA,YAAAA,CAAAW,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAElB,MAAMkB,KAAK,GAAG,cAAc;AAQ5B,MAAMC,0BAA0B,GAAGA,CAAA,KACjC,IAAAC,sBAAe,EAACF,KAAK,CAAwC;AAE/D,MAAMG,0BAA0B,GAAGA,CAAA,KACjCF,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC;AAEpC,MAAMG,MAAM,GAAGC,qBAAQ,CAACC,EAAE,KAAK,KAAK;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAeA,CAACC,4BAAiD,EAAE;EAC1E,MAAMC,KAAK,GAAGR,0BAA0B,CAAC,CAAC;EAC1C,MAAMS,OAAO,GAAGF,4BAA4B,IAAIC,KAAK,EAAEE,SAAS,IAAI,IAAI;EACxE,MAAMC,YAAY,GAAGF,OAAO,IAAIN,MAAM,GAAGK,KAAK,EAAEI,YAAY,GAAGC,SAAS;EACxE,OAAO;IACLN,4BAA4B,EAAEE,OAAO,IAAIE,YAAY,KAAKE,SAAS;IACnEC,MAAM,EAAEH,YAAY,gBAAG,IAAAhC,WAAA,CAAAoC,GAAA,EAAC5C,YAAA,CAAA6C,IAAI;MAACC,KAAK,EAAE;QAAEC,MAAM,EAAEP;MAAa,CAAE;MAACQ,aAAa,EAAC;IAAM,CAAE,CAAC,GAAG;EAC1F,CAAC;AACH;AAEA,MAAMC,WAAuB,GAAG;EAAEC,GAAG,EAAE,CAAC;EAAEC,MAAM,EAAE,CAAC;EAAEC,IAAI,EAAE,CAAC;EAAEC,KAAK,EAAE;AAAE,CAAC;AAExE,SAASC,aAAaA,CAAA,EAAe;EACnC,OAAO,IAAAC,iBAAU,EAACC,iDAAqB,CAAC,IAAIP,WAAW;AACzD;;AAEA;;AAqBA,MAAMQ,iBAAiB,gBAAG,IAAAC,iBAAU,EAClC,CACE;EACEC,KAAK;EACLC,QAAQ;EACRC,QAAQ;EACRC,SAAS;EACTC,OAAO;EACPC,uBAAuB;EACvBC,MAAM;EACNC;AACF,CAAC,EACDC,GAAG,kBAEH,IAAA3D,WAAA,CAAAoC,GAAA,EAACtC,YAAA,CAAA8D,WAAW;EACVD,GAAG,EAAEA,GAAI;EACTR,KAAK,EAAEA,KAAM;EACbC,QAAQ,EAAEA,QAAS;EACnBE,SAAS,EAAEA,SAAU;EACrBC,OAAO,EAAEA,OAAQ;EACjBC,uBAAuB,EAAEA,uBAAwB;EACjDC,MAAM,EAAEA,MAAO;EACfC,sBAAsB,EAAEA,sBAAuB;EAAAL,QAAA,EAE9CA;AAAQ,CACE,CAEjB,CAAC;AACDJ,iBAAiB,CAACY,WAAW,GAAG,oBAAoB;;AAEpD;AACA;AACA;;AAYA,MAAMC,kBAAkB,gBAAG,IAAAZ,iBAAU,EACnC,CAAC;EAAEG,QAAQ;EAAEC,SAAS;EAAES,gBAAgB;EAAEC,SAAS;EAAE1B;AAAM,CAAC,EAAEqB,GAAG,KAAK;EACpE,MAAMM,MAAM,GAAGnB,aAAa,CAAC,CAAC;EAC9B,MAAM;IAAEkB,SAAS,EAAEE;EAAqB,CAAC,GAAG3C,0BAA0B,CAAC,CAAC;EACxE,MAAM4C,iBAAiB,GAAG,IAAAC,SAAE,EAC1B,IAAAC,kCAA0B,EAAC;IAAEL,SAAS,EAAEA,SAAS,IAAIE;EAAqB,CAAC,CAAC,EAC5EZ,SACF,CAAC;EACD,oBACE,IAAAtD,WAAA,CAAAoC,GAAA,EAAC5C,YAAA,CAAA6C,IAAI;IACHsB,GAAG,EAAEA,GAAI;IACTL,SAAS,EAAEa,iBAAkB;IAC7B7B,KAAK,EAAEyB,gBAAgB,GAAG;MAAEO,aAAa,EAAEL,MAAM,CAACtB,MAAM;MAAE,GAAGL;IAAM,CAAC,GAAGA,KAAM;IAC7EE,aAAa,EAAC,UAAU;IAAAa,QAAA,EAEvBA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC;AAEDS,kBAAkB,CAACD,WAAW,GAAG,qBAAqB;;AAEtD;AACA;AACA;;AAOA,MAAMU,iBAAiB,gBAAG,IAAArB,iBAAU,EAClC,CAAC;EAAEG,QAAQ;EAAEC,SAAS;EAAEhB;AAAM,CAAC,EAAEqB,GAAG,KAAK;EACvC,MAAMM,MAAM,GAAGnB,aAAa,CAAC,CAAC;EAC9B,MAAMqB,iBAAiB,GAAG,IAAAC,SAAE,EAAC,IAAAI,iCAAyB,EAAC,CAAC,EAAElB,SAAS,CAAC;EACpE,oBACE,IAAAtD,WAAA,CAAAoC,GAAA,EAAC5C,YAAA,CAAA6C,IAAI;IACHsB,GAAG,EAAEA,GAAI;IACTL,SAAS,EAAEa,iBAAkB;IAC7B7B,KAAK,EAAE;MAAEgC,aAAa,EAAEG,IAAI,CAACC,GAAG,CAACT,MAAM,CAACtB,MAAM,EAAE,EAAE,CAAC;MAAE,GAAGL;IAAM,CAAE;IAChEE,aAAa,EAAC,UAAU;IAAAa,QAAA,EAEvBA;EAAQ,CACL,CAAC;AAEX,CACF,CAAC;AAEDkB,iBAAiB,CAACV,WAAW,GAAG,oBAAoB;;AAEpD;AACA;AACA;;AAiBA,MAAMc,wBAAwB,GAAGC,uBAAU,CAAC/D,GAAG,CAAC,QAAQ,CAAC,CAAC0B,MAAM,GAAG,GAAG;AAEtE,MAAMsC,cAAc,GAAIC,KAA+B,IAAK;EAC1D,oBACE,IAAA9E,WAAA,CAAAoC,GAAA,EAACzC,YAAA,CAAAoF,mBAAmB;IAAA,GACdD,KAAK;IACTE,iBAAiB,EAAE,CAAC,CAAE;IACtBC,cAAc,EAAE,CAAE;IAClBC,OAAO,EAAE,GAAI;IACbC,aAAa,EAAC;EAAO,CACtB,CAAC;AAEN,CAAC;AAED,MAAMC,gBAAgB,GAAIN,KAAkD,iBAC1E,IAAA9E,WAAA,CAAAoC,GAAA,EAAC5C,YAAA,CAAA6C,IAAI;EAAA,GAAKyC,KAAK;EAAExB,SAAS,EAAE+B;AAA+B,CAAE,CAC9D;AAED,MAAMC,sBAAsB,gBAAG,IAAApC,iBAAU,EAIvC,CACE;EAAEqC,aAAa,GAAG,IAAI;EAAEC,MAAM;EAAExB,SAAS;EAAEX,QAAQ;EAAEoC,SAAS;EAAEC,QAAQ;EAAEC,SAAS;EAAE,GAAGC;AAAK,CAAC,EAC9FjC,GAAG,KACA;EACH,MAAMkC,MAAM,GAAG,IAAAC,uBAAgB,EAAC,CAAC;EACjC,MAAM/D,SAAS,GAAGyD,MAAM,IAAI,IAAI,IAAII,IAAI,CAACG,eAAe,IAAI,IAAI;EAChE,MAAMC,cAAc,GAAGxE,MAAM,IAAIgE,MAAM,IAAI,IAAI;EAC/C,MAAM,CAACS,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC;EACnE,MAAMlE,YAAY,GAAG+D,cAAc,GAAGC,oBAAoB,GAAG/D,SAAS;EACtE,MAAMkE,GAAG,GAAG,IAAAC,cAAO,EACjB,OAAO;IACL,GAAGR,MAAM;IACT,CAACzE,KAAK,GAAG;MAAE4C,SAAS;MAAEjC,SAAS;MAAEE;IAAa;EAChD,CAAC,CAAC,EACF,CAAC4D,MAAM,EAAE7B,SAAS,EAAEjC,SAAS,EAAEE,YAAY,CAC7C,CAAC;EAED,MAAMqE,kBAAkB,GAAG,IAAAC,kBAAW,EAAEC,KAAwB,IAAK;IACnEN,uBAAuB,CAACM,KAAK,CAACC,WAAW,CAACC,MAAM,CAACnE,MAAM,CAAC;EAC1D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMoE,YAAY,GAAG,IAAAJ,kBAAW,EAC7BzB,KAAmC,iBAClC,IAAA9E,WAAA,CAAAoC,GAAA,EAACzC,YAAA,CAAA4E,iBAAuB;IAAA,GAAKO,KAAK;IAAAzB,QAAA,EAC/B2C,cAAc,gBACb,IAAAhG,WAAA,CAAAoC,GAAA,EAAC5C,YAAA,CAAA6C,IAAI;MAACuE,QAAQ,EAAEN,kBAAmB;MAAC9D,aAAa,EAAC,UAAU;MAAAa,QAAA,EACzDmC;IAAM,CACH,CAAC,GAEPA;EACD,CACsB,CAC1B,EACD,CAACA,MAAM,EAAEc,kBAAkB,EAAEN,cAAc,CAC7C,CAAC;EAED,MAAMa,QAAQ,GAAG,IAAAC,aAAM,EAA6B,IAAI,CAAC;EACzD,MAAMC,YAAY,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;EAClC,MAAME,eAAe,GAAG,IAAAF,aAAM,EAAC,KAAK,CAAC;EACrC,MAAMG,eAAe,GAAG,IAAAH,aAAM,EAAC,KAAK,CAAC;EACrC,MAAMI,iBAAiB,GAAG,IAAAJ,aAAM,EAAoD,IAAI,CAAC;EACzF,MAAM,CAACK,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAjB,eAAQ,EAAC,KAAK,CAAC;;EAEjD;EACA;EACA;EACA,MAAMkB,WAAW,GAAG,IAAAd,kBAAW,EAAEe,QAAoC,IAAK;IACxET,QAAQ,CAACU,OAAO,GAAGD,QAAQ;EAC7B,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA;EACA;EACA,MAAME,YAAY,GAAG,IAAAjB,kBAAW,EAAC,CAAC,GAAGkB,IAAgD,KAAK;IACxF,IAAIR,eAAe,CAACM,OAAO,EAAE;MAC3BL,iBAAiB,CAACK,OAAO,GAAGE,IAAI;MAChC;IACF;IACAZ,QAAQ,CAACU,OAAO,EAAEG,OAAO,CAAC,GAAGD,IAAI,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,gBAAgB,GAAG,IAAApB,kBAAW,EAAC,MAAM;IACzCS,eAAe,CAACO,OAAO,GAAG,IAAI;IAC9B,IAAI,CAACN,eAAe,CAACM,OAAO,EAAE;IAC9BN,eAAe,CAACM,OAAO,GAAG,KAAK;IAC/B,MAAMK,cAAc,GAAGV,iBAAiB,CAACK,OAAO;IAChDL,iBAAiB,CAACK,OAAO,GAAG,IAAI;IAChC,IAAIK,cAAc,EAAEf,QAAQ,CAACU,OAAO,EAAEG,OAAO,CAAC,GAAGE,cAAc,CAAC;EAClE,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA;EACA,IAAAC,0BAAmB,EACjBlE,GAAG,EACH,OAA4B;IAC1BmE,OAAO,EAAEA,CAAC,GAAGL,IAAI,KAAK;MACpBV,YAAY,CAACQ,OAAO,GAAG,KAAK;MAC5B,IAAI,CAACP,eAAe,CAACO,OAAO,EAAEN,eAAe,CAACM,OAAO,GAAG,IAAI;MAC5DH,YAAY,CAAC,IAAI,CAAC;MAClBP,QAAQ,CAACU,OAAO,EAAEO,OAAO,CAAC,GAAGL,IAAI,CAAC;IACpC,CAAC;IACDC,OAAO,EAAEF,YAAY;IACrBO,WAAW,EAAEA,CAAC,GAAGN,IAAI,KAAKZ,QAAQ,CAACU,OAAO,EAAEQ,WAAW,CAAC,GAAGN,IAAI,CAAC;IAChEO,cAAc,EAAEA,CAAC,GAAGP,IAAI,KAAKZ,QAAQ,CAACU,OAAO,EAAES,cAAc,CAAC,GAAGP,IAAI,CAAC;IACtEQ,MAAM,EAAEA,CAAC,GAAGR,IAAI,KAAKZ,QAAQ,CAACU,OAAO,EAAEU,MAAM,CAAC,GAAGR,IAAI,CAAC;IACtDS,QAAQ,EAAEA,CAAC,GAAGT,IAAI,KAAKZ,QAAQ,CAACU,OAAO,EAAEW,QAAQ,CAAC,GAAGT,IAAI,CAAC;IAC1DU,KAAK,EAAEA,CAAC,GAAGV,IAAI,KAAKZ,QAAQ,CAACU,OAAO,EAAEY,KAAK,CAAC,GAAGV,IAAI,CAAC;IACpDW,UAAU,EAAEA,CAAC,GAAGX,IAAI,KAAKZ,QAAQ,CAACU,OAAO,EAAEa,UAAU,CAAC,GAAGX,IAAI;EAC/D,CAAC,CAAC,EACF,CAACD,YAAY,CACf,CAAC;EAED,MAAMa,aAAa,GAAG,IAAA9B,kBAAW,EAAC,MAAM;IACtCS,eAAe,CAACO,OAAO,GAAG,KAAK;IAC/BN,eAAe,CAACM,OAAO,GAAG,KAAK;IAC/BL,iBAAiB,CAACK,OAAO,GAAG,IAAI;IAChCH,YAAY,CAAC,KAAK,CAAC;IACnB,IAAIL,YAAY,CAACQ,OAAO,EAAE;IAC1BR,YAAY,CAACQ,OAAO,GAAG,IAAI;IAC3B9B,SAAS,GAAG,CAAC;EACf,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAM6C,YAAY,GAAG,IAAA/B,kBAAW,EAC9B,CAAC,GAAGkB,IAAgE,KAAK;IACvEV,YAAY,CAACQ,OAAO,GAAG,KAAK;IAC5BH,YAAY,CAACK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAIA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAEE,gBAAgB,CAAC,CAAC;IACpCjC,QAAQ,GAAG,GAAG+B,IAAI,CAAC;EACrB,CAAC,EACD,CAACE,gBAAgB,EAAEjC,QAAQ,CAC7B,CAAC;EAED,MAAM6C,aAAa,GAAG,IAAAhC,kBAAW,EAC/B,CAAC,GAAGkB,IAAiE,KAAK;IACxE,IAAIA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAEE,gBAAgB,CAAC,CAAC;IACpChC,SAAS,GAAG,GAAG8B,IAAI,CAAC;EACtB,CAAC,EACD,CAACE,gBAAgB,EAAEhC,SAAS,CAC9B,CAAC;EAED,MAAM6C,EAAE,GAAG,IAAAC,YAAK,EAAC,CAAC;EAClB,MAAMC,SAAS,GAAG,gBAAgBF,EAAE,EAAE;EACtC,IAAAG,wBAAY,EAACxB,SAAS,EAAEK,YAAY,EAAE;IACpCgB,EAAE,EAAEE,SAAS;IACbE,OAAO,EAAEF,SAAS;IAClBG,KAAK,EAAE;EACT,CAAC,CAAC;EACF,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,uCAA2B,EAAC;IAChDC,MAAM,EAAE7B,SAAS,IAAI1F,qBAAQ,CAACC,EAAE,KAAK,KAAK;IAC1CuH,YAAY,EAAE,CAAC,MAAM,CAAC;IACtBT,EAAE,EAAEE,SAAS;IACbE,OAAO,EAAEF,SAAS;IAClBG,KAAK,EAAE;EACT,CAAC,CAAC;EAEF,IAAAK,gBAAS,EAAC,MAAM;IACd;IACA,IAAI,CAAC/B,SAAS,IAAI1F,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE;IAEzC,MAAMyH,WAAW,GAAGC,wBAAW,CAACC,gBAAgB,CAAC,mBAAmB,EAAE,MAAM;MAC1E,IAAI,CAACP,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK;MACpCtB,YAAY,CAAC,CAAC;MACd,OAAO,IAAI;IACb,CAAC,CAAC;IAEF,OAAO,MAAM;MACX2B,WAAW,CAACG,MAAM,CAAC,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,CAAC9B,YAAY,EAAEsB,SAAS,EAAE3B,SAAS,CAAC,CAAC;EAExC,MAAMoC,mBAAmB,GAAG,IAAAC,6BAAoB,EAACC,0CAAkC,CAAC;EACpF,MAAMC,oBAAoB,GAAG,IAAAF,6BAAoB,EAC/C,oDACF,CAAC;EAED,oBACE,IAAAxJ,WAAA,CAAAoC,GAAA,EAACzC,YAAA,CAAAgK,gBAAgB;IACfhG,GAAG,EAAE0D,WAAY;IACjBuC,mBAAmB;IACnBC,qBAAqB,EAAElF,wBAAyB;IAChDrC,KAAK,EAAEiH,mBAAoB;IAC3BO,eAAe,EAAEvE,aAAa,GAAGrD,SAAS,GAAG,IAAK;IAClDwH,oBAAoB,EAAEnE,aAAa,GAAGmE,oBAAoB,GAAGxH,SAAU;IACvE6H,iBAAiB,EAAElF,cAAe;IAClCmF,mBAAmB,EAAE5E,gBAAiB;IAAA,GAClCQ,IAAI;IACRH,SAAS,EAAE4C,aAAc;IACzB3C,QAAQ,EAAE4C,YAAa;IACvB3C,SAAS,EAAE4C,aAAc;IAAA,IACpB/C,MAAM,IAAI,IAAI,IAAI;MAAEO,eAAe,EAAEY;IAAa,CAAC;IAAAtD,QAAA,EAEvD,OAAOA,QAAQ,KAAK,UAAU,GAC5ByB,KAAyB,iBACxB,IAAA9E,WAAA,CAAAoC,GAAA,EAACvC,MAAA,CAAAoK,aAAa,CAACC,QAAQ;MAACC,KAAK,EAAE/D,GAAI;MAAA/C,QAAA,EAChCA,QAAQ,CAACyB,KAAK;IAAC,CACM,CACzB,gBAED,IAAA9E,WAAA,CAAAoC,GAAA,EAACvC,MAAA,CAAAoK,aAAa,CAACC,QAAQ;MAACC,KAAK,EAAE/D,GAAI;MAAA/C,QAAA,EAAEA;IAAQ,CAAyB;EACvE,CACe,CAAC;AAEvB,CACF,CAAC;AAEDiC,sBAAsB,CAACzB,WAAW,GAAG,mBAAmB;;AAExD;AACA;AACA;;AAEA,SAASuG,2BAA2BA,CAAC;EACnCxI,4BAA4B;EAC5ByB,QAAQ;EACR,GAAGuC;AACyD,CAAC,EAAE;EAC/D,MAAMyE,YAAY,GAAG1I,eAAe,CAACC,4BAA4B,CAAC;EAClE,oBACE,IAAA5B,WAAA,CAAAsK,IAAA,EAAC3K,YAAA,CAAA4K,qBAAqB;IACpB3I,4BAA4B,EAAEyI,YAAY,CAACzI,4BAA6B;IAAA,GACpEgE,IAAI;IAAAvC,QAAA,GAEPA,QAAQ,EACRgH,YAAY,CAAClI,MAAM;EAAA,CACC,CAAC;AAE5B;AAEAiI,2BAA2B,CAACvG,WAAW,GAAG,wBAAwB;;AAElE;AACA;AACA;;AAEA,SAAS2G,qBAAqBA,CAAC;EAC7B5I,4BAA4B;EAC5ByB,QAAQ;EACR,GAAGuC;AACmD,CAAC,EAAE;EACzD,MAAMyE,YAAY,GAAG1I,eAAe,CAACC,4BAA4B,CAAC;EAClE,oBACE,IAAA5B,WAAA,CAAAsK,IAAA,EAAC3K,YAAA,CAAA8K,eAAe;IACd7I,4BAA4B,EAAEyI,YAAY,CAACzI,4BAA6B;IAAA,GACpEgE,IAAI;IAAAvC,QAAA,GAEPA,QAAQ,EACRgH,YAAY,CAAClI,MAAM;EAAA,CACL,CAAC;AAEtB;AAEAqI,qBAAqB,CAAC3G,WAAW,GAAG,kBAAkB;;AAEtD;;AAIC6G,qCAAwB,CAAqB7G,WAAW,GAAG,sBAAsB;;AAElF;;AAYO,MAAM8G,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACzBE,KAAK,EAAEvF,sBAAsB;EAC7BwF,MAAM,EAAE7H,iBAAiB;EACzB8H,OAAO,EAAEjH,kBAAkB;EAC3BkH,MAAM,EAAEzG,iBAAiB;EACzB2F,QAAQ,EAAEQ,qCAAwB;EAClCO,UAAU,EAAEb,2BAA2B;EACvC/H,IAAI,EAAEmI;AACR,CAAwB;;AAExB;;AAEO,SAASU,cAAcA,CAAA,EAAG;EAC/B,MAAMvH,GAAG,GAAG,IAAAmD,aAAM,EAAsB,IAAI,CAAC;EAC7C,MAAMgB,OAAO,GAAG,IAAAvB,kBAAW,EAAC,MAAM;IAChC5C,GAAG,CAAC4D,OAAO,EAAEO,OAAO,CAAC,CAAC;EACxB,CAAC,EAAE,EAAE,CAAC;EACN,MAAMJ,OAAO,GAAG,IAAAnB,kBAAW,EAAC,MAAM;IAChC5C,GAAG,CAAC4D,OAAO,EAAEG,OAAO,CAAC,CAAC;EACxB,CAAC,EAAE,EAAE,CAAC;EACN,OAAO;IAAE/D,GAAG;IAAEmE,OAAO;IAAEJ;EAAQ,CAAC;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASyD,wBAAwBA,CAAA,EAAG;EACzC,MAAMvJ,4BAA4B,GAAGP,0BAA0B,CAAC,CAAC,EAAEU,SAAS,IAAI,IAAI;EACpF,OAAO,IAAAqJ,4CAA+B,EAAC;IAAExJ;EAA6B,CAAC,CAAC;AAC1E","ignoreList":[]}