@retray-dev/ui-kit 12.1.0 → 12.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.
- package/COMPONENTS.md +98 -4
- package/README.md +4 -4
- package/dist/Accordion.d.mts +6 -0
- package/dist/Accordion.d.ts +6 -0
- package/dist/Accordion.js +16 -0
- package/dist/Accordion.mjs +2 -2
- package/dist/AlertBanner.js +2 -0
- package/dist/AlertBanner.mjs +2 -2
- package/dist/AppHeader.js +2 -0
- package/dist/AppHeader.mjs +3 -3
- package/dist/Avatar.js +2 -0
- package/dist/Avatar.mjs +2 -2
- package/dist/Badge.js +2 -0
- package/dist/Badge.mjs +2 -2
- package/dist/Button.js +17 -17
- package/dist/Button.mjs +2 -2
- package/dist/Card.js +2 -0
- package/dist/Card.mjs +2 -2
- package/dist/CategoryStrip.js +2 -0
- package/dist/CategoryStrip.mjs +2 -2
- package/dist/Checkbox.js +2 -0
- package/dist/Checkbox.mjs +2 -2
- package/dist/Chip.js +2 -0
- package/dist/Chip.mjs +2 -2
- package/dist/ConfirmDialog.js +26 -20
- package/dist/ConfirmDialog.mjs +3 -3
- package/dist/CurrencyDisplay.js +2 -0
- package/dist/CurrencyDisplay.mjs +2 -2
- package/dist/CurrencyInput.js +2 -0
- package/dist/CurrencyInput.mjs +3 -3
- package/dist/DetailRow.js +2 -0
- package/dist/DetailRow.mjs +2 -2
- package/dist/EmptyState.js +17 -17
- package/dist/EmptyState.mjs +3 -3
- package/dist/ErrorBoundary.js +2 -0
- package/dist/ErrorBoundary.mjs +2 -2
- package/dist/Form.js +2 -0
- package/dist/Form.mjs +2 -2
- package/dist/IconButton.js +2 -0
- package/dist/IconButton.mjs +2 -2
- package/dist/IconPicker.js +2 -0
- package/dist/IconPicker.mjs +3 -3
- package/dist/ImageUpload.d.mts +3 -1
- package/dist/ImageUpload.d.ts +3 -1
- package/dist/ImageUpload.js +10 -3
- package/dist/ImageUpload.mjs +3 -3
- package/dist/ImageViewer.js +2 -0
- package/dist/ImageViewer.mjs +4 -4
- package/dist/Input.js +2 -0
- package/dist/Input.mjs +2 -2
- package/dist/LabelValue.js +2 -0
- package/dist/LabelValue.mjs +2 -2
- package/dist/ListGroup.js +2 -0
- package/dist/ListGroup.mjs +2 -2
- package/dist/ListItem.js +2 -0
- package/dist/ListItem.mjs +2 -2
- package/dist/MediaCard.js +2 -0
- package/dist/MediaCard.mjs +2 -2
- package/dist/MenuGroup.js +2 -0
- package/dist/MenuGroup.mjs +2 -2
- package/dist/MenuItem.js +2 -0
- package/dist/MenuItem.mjs +2 -2
- package/dist/MonthPicker.js +2 -0
- package/dist/MonthPicker.mjs +2 -2
- package/dist/NumberStepper.js +2 -0
- package/dist/NumberStepper.mjs +2 -2
- package/dist/PagerDots.js +2 -0
- package/dist/PagerDots.mjs +2 -2
- package/dist/PricingCard.js +17 -17
- package/dist/PricingCard.mjs +4 -4
- package/dist/Progress.js +2 -0
- package/dist/Progress.mjs +2 -2
- package/dist/RadioGroup.js +2 -0
- package/dist/RadioGroup.mjs +2 -2
- package/dist/RetrayProvider.d.mts +1 -1
- package/dist/RetrayProvider.d.ts +1 -1
- package/dist/RetrayProvider.js +2 -0
- package/dist/RetrayProvider.mjs +3 -3
- package/dist/Select.js +2 -0
- package/dist/Select.mjs +2 -2
- package/dist/SelectableCard.d.mts +27 -0
- package/dist/SelectableCard.d.ts +27 -0
- package/dist/SelectableCard.js +511 -0
- package/dist/SelectableCard.mjs +8 -0
- package/dist/SelectableGrid.js +2 -0
- package/dist/SelectableGrid.mjs +2 -2
- package/dist/Separator.js +2 -0
- package/dist/Separator.mjs +2 -2
- package/dist/Sheet.js +11 -3
- package/dist/Sheet.mjs +2 -2
- package/dist/SheetSelect.js +2 -0
- package/dist/SheetSelect.mjs +2 -2
- package/dist/Skeleton.d.mts +3 -1
- package/dist/Skeleton.d.ts +3 -1
- package/dist/Skeleton.js +5 -2
- package/dist/Skeleton.mjs +2 -2
- package/dist/Slider.js +2 -0
- package/dist/Slider.mjs +2 -2
- package/dist/Spinner.js +2 -0
- package/dist/Spinner.mjs +2 -2
- package/dist/Stats.d.mts +4 -1
- package/dist/Stats.d.ts +4 -1
- package/dist/Stats.js +27 -3
- package/dist/Stats.mjs +2 -2
- package/dist/Switch.js +2 -0
- package/dist/Switch.mjs +2 -2
- package/dist/TabBar.js +2 -0
- package/dist/TabBar.mjs +2 -2
- package/dist/Tabs.js +2 -0
- package/dist/Tabs.mjs +2 -2
- package/dist/Text.js +2 -0
- package/dist/Text.mjs +2 -2
- package/dist/Textarea.js +2 -0
- package/dist/Textarea.mjs +2 -2
- package/dist/Toast.js +2 -0
- package/dist/Toast.mjs +2 -2
- package/dist/Toggle.js +2 -0
- package/dist/Toggle.mjs +2 -2
- package/dist/{chunk-JNVAIDLK.mjs → chunk-2BA3JMKK.mjs} +1 -1
- package/dist/{chunk-X26S5EVZ.mjs → chunk-2HFD4IHU.mjs} +1 -1
- package/dist/{chunk-ZHMSAYLT.mjs → chunk-2LG326TT.mjs} +1 -1
- package/dist/chunk-2P2CB235.mjs +236 -0
- package/dist/{chunk-MYZ2EDYU.mjs → chunk-3XCFYSX4.mjs} +1 -1
- package/dist/{chunk-DOGIPOF5.mjs → chunk-4J2PXL36.mjs} +16 -18
- package/dist/{chunk-V6NFJXKO.mjs → chunk-4OORJ2DY.mjs} +1 -1
- package/dist/{chunk-5OLNXP3S.mjs → chunk-4XOB5TTD.mjs} +26 -4
- package/dist/{chunk-P64WHW4A.mjs → chunk-57V2LXCK.mjs} +1 -1
- package/dist/{chunk-HJ46DTJE.mjs → chunk-7AFZWSCI.mjs} +1 -1
- package/dist/{chunk-AQEVCEXV.mjs → chunk-7ELGZ66G.mjs} +1 -1
- package/dist/{chunk-I4V5XZPS.mjs → chunk-AENAVIKT.mjs} +1 -1
- package/dist/{chunk-2CBQKU7H.mjs → chunk-BXF4AMHY.mjs} +1 -1
- package/dist/{chunk-JULSIZDM.mjs → chunk-C43HRKXH.mjs} +1 -1
- package/dist/{chunk-GK4VRMNE.mjs → chunk-CF27NBXO.mjs} +11 -6
- package/dist/{chunk-PGERH3P7.mjs → chunk-DF7JA72E.mjs} +1 -1
- package/dist/{chunk-F4V6XLP4.mjs → chunk-E5UKLSJZ.mjs} +3 -3
- package/dist/{chunk-FUVYSVGR.mjs → chunk-EDLCGYIO.mjs} +1 -1
- package/dist/{chunk-N4ZPVCJH.mjs → chunk-ELGEOM7I.mjs} +1 -1
- package/dist/{chunk-FA2KMTH5.mjs → chunk-F3YTWO3T.mjs} +1 -1
- package/dist/{chunk-3UYAZ7I4.mjs → chunk-GH67YXG6.mjs} +1 -1
- package/dist/{chunk-357YO24D.mjs → chunk-GUTDFUNF.mjs} +1 -1
- package/dist/{chunk-7HSILTC4.mjs → chunk-HC4VVCWY.mjs} +2 -2
- package/dist/{chunk-WOEWGSTU.mjs → chunk-HEDQPK4I.mjs} +1 -1
- package/dist/{chunk-3GEYJ7I5.mjs → chunk-IVSRW4HS.mjs} +1 -1
- package/dist/{chunk-P73V2EKS.mjs → chunk-KSUWPU2F.mjs} +1 -1
- package/dist/{chunk-BCWEHE34.mjs → chunk-LIS6I5UP.mjs} +1 -1
- package/dist/{chunk-J6Q2YJEV.mjs → chunk-LNPKGWBG.mjs} +1 -1
- package/dist/{chunk-DF6DU42P.mjs → chunk-LOBLCFMN.mjs} +1 -1
- package/dist/{chunk-2A2LEFZG.mjs → chunk-LPV4NJJK.mjs} +2 -2
- package/dist/{chunk-FFTYLPSB.mjs → chunk-M3C7XM2M.mjs} +11 -5
- package/dist/{chunk-BQZE3HAW.mjs → chunk-MEPSKGBO.mjs} +1 -1
- package/dist/{chunk-ISY26JQJ.mjs → chunk-MVMGPZN6.mjs} +2 -2
- package/dist/{chunk-265G6A46.mjs → chunk-NHDI3VQB.mjs} +15 -1
- package/dist/{chunk-D3Y2T42P.mjs → chunk-NJG7DHVF.mjs} +1 -1
- package/dist/{chunk-LRM4AVYY.mjs → chunk-NLZY4TXU.mjs} +1 -1
- package/dist/{chunk-OULVKTWL.mjs → chunk-OLVJFKXS.mjs} +1 -1
- package/dist/{chunk-BOVUP27T.mjs → chunk-QDAZGZUF.mjs} +4 -3
- package/dist/{chunk-S3KJCPEJ.mjs → chunk-QOLWA2PW.mjs} +1 -1
- package/dist/{chunk-JCZQOY4O.mjs → chunk-QXDGGOLC.mjs} +12 -6
- package/dist/{chunk-4WFMPFZB.mjs → chunk-RJNLAH76.mjs} +1 -1
- package/dist/{chunk-HLMPMUK2.mjs → chunk-RMRS44MQ.mjs} +1 -1
- package/dist/{chunk-KHYX4IOM.mjs → chunk-SAWUXP3A.mjs} +2 -2
- package/dist/{chunk-2I2AYECM.mjs → chunk-TS7DGUIR.mjs} +1 -1
- package/dist/{chunk-3N2M3WZL.mjs → chunk-UBUXUMER.mjs} +1 -1
- package/dist/{chunk-AKM4EPOT.mjs → chunk-ULGNQPNE.mjs} +1 -1
- package/dist/{chunk-FVTVCJAH.mjs → chunk-UNNRUJTM.mjs} +1 -1
- package/dist/{chunk-DI7CBDL6.mjs → chunk-UQ4742ET.mjs} +1 -1
- package/dist/{chunk-EFLFRAHD.mjs → chunk-VJBUCITV.mjs} +1 -1
- package/dist/{chunk-QSFV2P7O.mjs → chunk-YMYIEVZP.mjs} +1 -1
- package/dist/{chunk-EMUWGDWC.mjs → chunk-YTXRIXNZ.mjs} +2 -0
- package/dist/{chunk-XBAGGKLW.mjs → chunk-ZIMY2QUM.mjs} +2 -2
- package/dist/{chunk-NXI4YDZ2.mjs → chunk-ZR6HSEAB.mjs} +1 -1
- package/dist/{index-wt-orHUi.d.ts → index-CY34hxPN.d.mts} +1 -0
- package/dist/{index-wt-orHUi.d.mts → index-CY34hxPN.d.ts} +1 -0
- package/dist/index.d.mts +3 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.js +733 -453
- package/dist/index.mjs +53 -52
- package/package.json +1 -1
- package/src/components/Accordion/Accordion.tsx +20 -0
- package/src/components/Button/Button.tsx +29 -26
- package/src/components/ConfirmDialog/ConfirmDialog.tsx +10 -3
- package/src/components/ImageUpload/ImageUpload.tsx +10 -3
- package/src/components/SelectableCard/SelectableCard.tsx +304 -0
- package/src/components/SelectableCard/index.ts +1 -0
- package/src/components/Sheet/Sheet.tsx +10 -3
- package/src/components/Skeleton/Skeleton.tsx +5 -2
- package/src/components/Stats/Stats.tsx +35 -7
- package/src/index.ts +1 -0
- package/src/theme/colors.ts +7 -0
- package/src/theme/types.ts +4 -1
package/COMPONENTS.md
CHANGED
|
@@ -275,8 +275,9 @@ The full palette components consume. Never supply these directly — they are co
|
|
|
275
275
|
|-------|-------------|---------|
|
|
276
276
|
| `foregroundSubtle` | `foreground` @ ~70% | Body text, subtitles, secondary content |
|
|
277
277
|
| `foregroundMuted` | `foreground` @ ~62% | Captions, timestamps, placeholders |
|
|
278
|
-
| `surface` | `background` slightly off-canvas | Chip backgrounds, input fills, tag backgrounds
|
|
278
|
+
| `surface` | `background` slightly off-canvas | Chip backgrounds, input fills, tag backgrounds |
|
|
279
279
|
| `surfaceStrong` | `background` stronger offset | Pressed/hover fill states |
|
|
280
|
+
| `skeleton` | `background` @ ±10% | Skeleton placeholder — higher contrast than surface for visibility |
|
|
280
281
|
| `destructiveTint` | `destructive` blended to bg | Alert banner background, toast background |
|
|
281
282
|
| `destructiveBorder` | `destructive` @ 30% | Alert banner border, badge outline |
|
|
282
283
|
| `successTint` | `success` blended to bg | Success banner background |
|
|
@@ -285,6 +286,7 @@ The full palette components consume. Never supply these directly — they are co
|
|
|
285
286
|
| `warningBorder` | `warning` @ 30% | Warning banner border |
|
|
286
287
|
| `ring` | `= primary` | Focus ring color (always matches primary) |
|
|
287
288
|
| `input` | `= border` | Input field border (always matches border) |
|
|
289
|
+
| `separator` | `border` @ ±16-22% | Divider/separator line — deliberately darker than border |
|
|
288
290
|
| `overlay` | `overlay` token or `rgba(0,0,0,0.45)` | Backdrop behind sheets and dialogs |
|
|
289
291
|
| `accentResolved` | `accent` token or `= primary` | Resolved accent color — always present |
|
|
290
292
|
| `accentForegroundResolved` | `accentForeground` token or `= primaryForeground` | Resolved text on accent — always present |
|
|
@@ -312,7 +314,7 @@ const { colors } = useTheme()
|
|
|
312
314
|
import { deriveColors } from '@retray-dev/ui-kit'
|
|
313
315
|
|
|
314
316
|
const resolved = deriveColors(myThemeColors, 'light')
|
|
315
|
-
// resolved contains all
|
|
317
|
+
// resolved contains all 26 ResolvedColors tokens
|
|
316
318
|
```
|
|
317
319
|
|
|
318
320
|
---
|
|
@@ -917,7 +919,7 @@ No consumer action required — the fix is internal.
|
|
|
917
919
|
| size | `'sm' \| 'md' \| 'lg'` | `'md'` | Controls height, padding, and icon size |
|
|
918
920
|
| loading | `boolean` | `false` | Replaces label with spinner, forces disabled state |
|
|
919
921
|
| fullWidth | `boolean` | `false` | Stretches to container width (`alignSelf: 'stretch'`) |
|
|
920
|
-
| disabled | `boolean` | — |
|
|
922
|
+
| disabled | `boolean` | — | Per-variant explicit colors (no opacity). `filled`→`surface` bg, `secondary`→`border` border, `text`/`outline`→`foregroundMuted` text |
|
|
921
923
|
| icon | `React.ReactNode \| ((props: { label, size, variant }) => React.ReactNode)` | — | Icon rendered alongside label |
|
|
922
924
|
| iconName | `string` | — | Icon name from `@expo/vector-icons`. Takes precedence over `icon` |
|
|
923
925
|
| iconColor | `string` | — | Override icon color. Defaults to variant label color |
|
|
@@ -1902,6 +1904,7 @@ const renderItem = useCallback(({ item }) => (
|
|
|
1902
1904
|
| width | `number \| string` | `'100%'` | Width of placeholder |
|
|
1903
1905
|
| height | `number` | `16` | Height of placeholder |
|
|
1904
1906
|
| borderRadius | `number` | `6` | Corner radius |
|
|
1907
|
+
| backgroundColor | `string` | `colors.skeleton` | Override placeholder background color |
|
|
1905
1908
|
| preset | `'base' \| 'circle' \| 'text'` | `'base'` | Convenience preset |
|
|
1906
1909
|
| diameter | `number` | `40` | Used by `'circle'` preset — overrides width/height |
|
|
1907
1910
|
| style | `ViewStyle` | — | — |
|
|
@@ -2349,6 +2352,94 @@ const [accepted, setAccepted] = useState(false)
|
|
|
2349
2352
|
|
|
2350
2353
|
---
|
|
2351
2354
|
|
|
2355
|
+
### SelectableCard
|
|
2356
|
+
|
|
2357
|
+
**Import:** `import { SelectableCard, SelectableCardGroup } from '@retray-dev/ui-kit'`
|
|
2358
|
+
|
|
2359
|
+
**When to use:** Selectable cards with radio (single-select) or checkbox (multi-select) behavior. Each card supports an icon, title, description, and disabled state. Perfect for role selectors, plan pickers, feature/module configuration — anywhere you need descriptive options that communicate more than a simple label.
|
|
2360
|
+
|
|
2361
|
+
| Prop | Type | Default | Notes |
|
|
2362
|
+
|------|------|---------|-------|
|
|
2363
|
+
| value | `string` | required | The value this card represents |
|
|
2364
|
+
| title | `string` | required | Card title |
|
|
2365
|
+
| description | `string` | — | Secondary text below title |
|
|
2366
|
+
| iconName | `string` | — | Left icon from @expo/vector-icons |
|
|
2367
|
+
| icon | `ReactNode` | — | Custom left icon |
|
|
2368
|
+
| disabled | `boolean` | `false` | Grayed out, no press/haptic |
|
|
2369
|
+
| style | `ViewStyle` | — | — |
|
|
2370
|
+
|
|
2371
|
+
**SelectableCardGroup Props:**
|
|
2372
|
+
|
|
2373
|
+
| Prop | Type | Default | Notes |
|
|
2374
|
+
|------|------|---------|-------|
|
|
2375
|
+
| type | `'radio' \| 'checkbox'` | `'radio'` | Selection mode |
|
|
2376
|
+
| value | `string \| string[]` | required | Selected value(s) |
|
|
2377
|
+
| onValueChange | `(value: string \| string[]) => void` | required | — |
|
|
2378
|
+
| variant | `'elevated' \| 'outlined' \| 'filled'` | `'elevated'` | Card surface |
|
|
2379
|
+
| gap | `number` | `s(8)` | Spacing between cards |
|
|
2380
|
+
| style | `ViewStyle` | — | — |
|
|
2381
|
+
|
|
2382
|
+
**Card variants:** `elevated` (shadow depth, 2px border matches background when unselected — no layout shift on select), `outlined` (2px border), `filled` (surfaceStrong background + 2px border). All variants use a consistent 2px border width so cards don't resize when selected.
|
|
2383
|
+
|
|
2384
|
+
**Selection visual:** Selected cards get a 2px `colors.primary` border + `EaseView` animated selector indicator. Radio shows a 24×24 circle with spring-animated inner dot. Checkbox shows a 24×24 box with opacity-animated checkmark. Both follow the same visual patterns as `RadioGroup` and `Checkbox`.
|
|
2385
|
+
|
|
2386
|
+
**Haptics:** `impactLight` on selection.
|
|
2387
|
+
|
|
2388
|
+
**Disabled:** Dims content to `foregroundMuted`, removes shadow/elevation, keeps border at `colors.border`. No press, no haptic.
|
|
2389
|
+
|
|
2390
|
+
**Examples:**
|
|
2391
|
+
```tsx
|
|
2392
|
+
// Single select (radio)
|
|
2393
|
+
<SelectableCardGroup
|
|
2394
|
+
type="radio"
|
|
2395
|
+
value={selectedRole}
|
|
2396
|
+
onValueChange={setSelectedRole}
|
|
2397
|
+
>
|
|
2398
|
+
<SelectableCard
|
|
2399
|
+
value="admin"
|
|
2400
|
+
iconName="shield"
|
|
2401
|
+
title="Administrator"
|
|
2402
|
+
description="Full access to reports, settings, and business management"
|
|
2403
|
+
/>
|
|
2404
|
+
<SelectableCard
|
|
2405
|
+
value="waiter"
|
|
2406
|
+
iconName="user-check"
|
|
2407
|
+
title="Waiter"
|
|
2408
|
+
description="Take orders from tables and manage requests"
|
|
2409
|
+
/>
|
|
2410
|
+
<SelectableCard
|
|
2411
|
+
value="cook"
|
|
2412
|
+
iconName="chef-hat"
|
|
2413
|
+
title="Cook"
|
|
2414
|
+
description="Receive and prepare items from each order in the kitchen"
|
|
2415
|
+
disabled
|
|
2416
|
+
/>
|
|
2417
|
+
</SelectableCardGroup>
|
|
2418
|
+
|
|
2419
|
+
// Multi select (checkbox)
|
|
2420
|
+
<SelectableCardGroup
|
|
2421
|
+
type="checkbox"
|
|
2422
|
+
value={selectedRoles}
|
|
2423
|
+
onValueChange={setSelectedRoles}
|
|
2424
|
+
variant="outlined"
|
|
2425
|
+
>
|
|
2426
|
+
<SelectableCard
|
|
2427
|
+
value="reports"
|
|
2428
|
+
iconName="bar-chart-2"
|
|
2429
|
+
title="Reports"
|
|
2430
|
+
description="View sales, inventory, and performance analytics"
|
|
2431
|
+
/>
|
|
2432
|
+
<SelectableCard
|
|
2433
|
+
value="inventory"
|
|
2434
|
+
iconName="package"
|
|
2435
|
+
title="Inventory"
|
|
2436
|
+
description="Manage stock levels and supplier orders"
|
|
2437
|
+
/>
|
|
2438
|
+
</SelectableCardGroup>
|
|
2439
|
+
```
|
|
2440
|
+
|
|
2441
|
+
---
|
|
2442
|
+
|
|
2352
2443
|
### Slider
|
|
2353
2444
|
|
|
2354
2445
|
**Import:** `import { Slider } from '@retray-dev/ui-kit'`
|
|
@@ -2510,6 +2601,7 @@ const [tab, setTab] = useState('profile')
|
|
|
2510
2601
|
iconName?: string // Icon name from @expo/vector-icons
|
|
2511
2602
|
icon?: ReactNode // Custom icon node
|
|
2512
2603
|
iconColor?: string // Override icon color (defaults to foregroundMuted)
|
|
2604
|
+
triggerActions?: ReactNode // Action buttons rendered between trigger and chevron. Touch-isolated — taps on actions won't toggle the accordion.
|
|
2513
2605
|
}
|
|
2514
2606
|
```
|
|
2515
2607
|
|
|
@@ -3980,12 +4072,13 @@ export default function TabLayout() {
|
|
|
3980
4072
|
| icon | `React.ReactNode` | — | Custom icon node |
|
|
3981
4073
|
| iconName | `string` | — | Icon from `@expo/vector-icons` (left of value, `colors.primary`) |
|
|
3982
4074
|
| iconColor | `string` | `colors.primary` | Override icon color |
|
|
4075
|
+
| size | `'default' \| 'compact'` | `'default'` | `compact`: 16px SemiBold value, 11px label, reduced padding |
|
|
3983
4076
|
| variant | `'elevated' \| 'outlined' \| 'filled'` | `'elevated'` | Card surface variant |
|
|
3984
4077
|
| onPress | `() => void` | — | Makes the card pressable (haptic `impactLight()`) |
|
|
3985
4078
|
| style | `ViewStyle` | — | — |
|
|
3986
4079
|
| accessibilityLabel | `string` | — | — |
|
|
3987
4080
|
|
|
3988
|
-
**Design notes:** Value uses `Sohne-Bold` at
|
|
4081
|
+
**Design notes:** Value uses `Sohne-Bold` at 21px. Label uses `Sohne-Regular` at 13px in `foregroundSubtle`. Description uses `Sohne-Regular` at 12px in `foregroundMuted`. Icon renders at 20px, left-aligned with the value. All content is centered vertically and horizontally. The card shrinks to fit its content by default (`alignSelf: 'flex-start'`). When placed inside `Stats.Group`, cards stretch to equal width. When the card is narrow (< 150dp) and has an icon, the layout switches to vertical stacking (icon → value → label → description) to avoid overflow.
|
|
3989
4082
|
|
|
3990
4083
|
**`Stats.Group`** — horizontal layout wrapper that distributes children equally:
|
|
3991
4084
|
|
|
@@ -4237,6 +4330,7 @@ import { HolographicCard, FOIL_PRESETS } from '@retray-dev/ui-kit/HolographicCar
|
|
|
4237
4330
|
| borderRadius | `number` | `RADIUS.lg` | — |
|
|
4238
4331
|
| resizeMode | `'cover' \| 'contain' \| 'stretch'` | `'cover'` | Image resize mode |
|
|
4239
4332
|
| disabled | `boolean` | `false` | Prevents pressing |
|
|
4333
|
+
| allowsEditing | `boolean` | `true` | When `true`, iOS opens the crop/editing screen after selecting an image. Set `false` to accept the image directly without cropping |
|
|
4240
4334
|
| style | `ViewStyle` | — | — |
|
|
4241
4335
|
| accessibilityLabel | `string` | — | — |
|
|
4242
4336
|
|
package/README.md
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
A personal React Native / Expo UI component library with a built-in design system, dark mode support, haptic feedback, and smooth animations.
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
- Light/dark theme with 12 public tokens (
|
|
5
|
+
- 55 components across 9 categories (plus the deep-import `HolographicCard`)
|
|
6
|
+
- Light/dark theme with 12 public tokens (26 resolved) and full customization
|
|
7
7
|
- Apple HIG–compliant touch targets and haptic feedback
|
|
8
8
|
- Animated interactions: spring press, sliding tabs, accordion easing, animated progress
|
|
9
9
|
- Built with TypeScript — full type declarations included
|
|
@@ -156,7 +156,7 @@ const { colors, colorScheme } = useTheme()
|
|
|
156
156
|
|
|
157
157
|
**Public tokens (12 — override these):** `background`, `foreground`, `card`, `primary`, `primaryForeground`, `border`, `destructive`, `destructiveForeground`, `success`, `successForeground`, `warning`, `warningForeground`. Optional: `overlay`, `accent`, `accentForeground`.
|
|
158
158
|
|
|
159
|
-
**Derived tokens (read-only via `useTheme()`):** `foregroundSubtle`, `foregroundMuted`, `surface`, `surfaceStrong`, `destructiveTint`, `destructiveBorder`, `successTint`, `successBorder`, `warningTint`, `warningBorder`, `ring`, `input`, `separator`, `overlay`, `accentResolved`, `accentForegroundResolved`
|
|
159
|
+
**Derived tokens (read-only via `useTheme()`):** `foregroundSubtle`, `foregroundMuted`, `surface`, `surfaceStrong`, `skeleton`, `destructiveTint`, `destructiveBorder`, `successTint`, `successBorder`, `warningTint`, `warningBorder`, `ring`, `input`, `separator`, `overlay`, `accentResolved`, `accentForegroundResolved`
|
|
160
160
|
|
|
161
161
|
## Design Tokens
|
|
162
162
|
|
|
@@ -187,7 +187,7 @@ import { SPACING, ICON_SIZES, RADIUS, SHADOWS, BREAKPOINTS, TYPOGRAPHY } from '@
|
|
|
187
187
|
| ----------- | ----------------------------------------------------------------------------------------------- |
|
|
188
188
|
| Display | `Text`, `Badge`, `Avatar`, `Separator`, `Spinner`, `Skeleton`, `Progress`, `CurrencyDisplay`, `Stats` |
|
|
189
189
|
| Surfaces | `Card`, `AlertBanner`, `EmptyState`, `MediaCard`, `PricingCard` |
|
|
190
|
-
| Form | `Form` (+ `Form.Field` / `Form.Section` / `Form.Footer`), `Button`, `ButtonGroup`, `IconButton`, `Input`, `CurrencyInput`, `Textarea`, `Checkbox`, `Switch`, `Toggle`, `RadioGroup`, `Select`, `Slider`, `SelectableGrid`, `SheetSelect`, `ImageUpload`, `IconPicker`, `NumberStepper` |
|
|
190
|
+
| Form | `Form` (+ `Form.Field` / `Form.Section` / `Form.Footer`), `Button`, `ButtonGroup`, `IconButton`, `Input`, `CurrencyInput`, `Textarea`, `Checkbox`, `Switch`, `Toggle`, `RadioGroup`, `Select`, `Slider`, `SelectableGrid`, `SelectableCard` (+ `SelectableCardGroup`), `SheetSelect`, `ImageUpload`, `IconPicker`, `NumberStepper` |
|
|
191
191
|
| Composition | `Tabs`, `Accordion` |
|
|
192
192
|
| Navigation | `AppHeader`, `TabBar`, `PagerDots` |
|
|
193
193
|
| Overlays | `Sheet`, `ConfirmDialog`, `ImageViewer` |
|
package/dist/Accordion.d.mts
CHANGED
|
@@ -11,6 +11,12 @@ interface AccordionItem {
|
|
|
11
11
|
icon?: React.ReactNode;
|
|
12
12
|
/** Override icon color. Defaults to foregroundMuted. */
|
|
13
13
|
iconColor?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Action buttons rendered after the trigger content but before the chevron.
|
|
16
|
+
* Automatically touch-isolated — taps on actions won't toggle the accordion.
|
|
17
|
+
* Use this instead of embedding interactive elements inside `trigger`.
|
|
18
|
+
*/
|
|
19
|
+
triggerActions?: React.ReactNode;
|
|
14
20
|
}
|
|
15
21
|
interface AccordionProps {
|
|
16
22
|
items: AccordionItem[];
|
package/dist/Accordion.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ interface AccordionItem {
|
|
|
11
11
|
icon?: React.ReactNode;
|
|
12
12
|
/** Override icon color. Defaults to foregroundMuted. */
|
|
13
13
|
iconColor?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Action buttons rendered after the trigger content but before the chevron.
|
|
16
|
+
* Automatically touch-isolated — taps on actions won't toggle the accordion.
|
|
17
|
+
* Use this instead of embedding interactive elements inside `trigger`.
|
|
18
|
+
*/
|
|
19
|
+
triggerActions?: React.ReactNode;
|
|
14
20
|
}
|
|
15
21
|
interface AccordionProps {
|
|
16
22
|
items: AccordionItem[];
|
package/dist/Accordion.js
CHANGED
|
@@ -163,6 +163,7 @@ function deriveColors(t, scheme) {
|
|
|
163
163
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
164
164
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
165
165
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
166
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
166
167
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
167
168
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
168
169
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -175,6 +176,7 @@ function deriveColors(t, scheme) {
|
|
|
175
176
|
foregroundMuted,
|
|
176
177
|
surface,
|
|
177
178
|
surfaceStrong,
|
|
179
|
+
skeleton,
|
|
178
180
|
destructiveTint,
|
|
179
181
|
destructiveBorder,
|
|
180
182
|
successTint,
|
|
@@ -305,6 +307,14 @@ function AccordionItemComponent({
|
|
|
305
307
|
accessibilityLabel: typeof item.trigger === "string" ? item.trigger : void 0
|
|
306
308
|
},
|
|
307
309
|
/* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles.triggerContent }, resolvedIcon ? /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles.icon }, resolvedIcon) : null, typeof item.trigger === "string" ? /* @__PURE__ */ React3__default.default.createElement(reactNative.Text, { style: [styles.triggerText, { color: colors.foreground }], allowFontScaling: true }, item.trigger) : item.trigger),
|
|
310
|
+
item.triggerActions ? /* @__PURE__ */ React3__default.default.createElement(
|
|
311
|
+
reactNative.View,
|
|
312
|
+
{
|
|
313
|
+
style: styles.triggerActions,
|
|
314
|
+
onTouchEnd: (e) => e.stopPropagation()
|
|
315
|
+
},
|
|
316
|
+
item.triggerActions
|
|
317
|
+
) : null,
|
|
308
318
|
/* @__PURE__ */ React3__default.default.createElement(Animated__default.default.View, { style: [styles.chevron, rotationStyle] }, /* @__PURE__ */ React3__default.default.createElement(vectorIcons.Entypo, { name: "chevron-down", size: 18, color: colors.foregroundMuted }))
|
|
309
319
|
), /* @__PURE__ */ React3__default.default.createElement(Animated__default.default.View, { style: bodyStyle }, /* @__PURE__ */ React3__default.default.createElement(
|
|
310
320
|
reactNative.View,
|
|
@@ -374,6 +384,12 @@ var styles = reactNative.StyleSheet.create({
|
|
|
374
384
|
chevron: {
|
|
375
385
|
marginLeft: s(8)
|
|
376
386
|
},
|
|
387
|
+
triggerActions: {
|
|
388
|
+
flexDirection: "row",
|
|
389
|
+
alignItems: "center",
|
|
390
|
+
gap: s(4),
|
|
391
|
+
marginLeft: s(8)
|
|
392
|
+
},
|
|
377
393
|
// position:'absolute' is the key — the inner View escapes the animated wrapper's
|
|
378
394
|
// clipped height so onLayout always reports the true content height.
|
|
379
395
|
content: {
|
package/dist/Accordion.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { Accordion } from './chunk-
|
|
1
|
+
export { Accordion } from './chunk-NHDI3VQB.mjs';
|
|
2
2
|
import './chunk-EJ7ZPXOH.mjs';
|
|
3
3
|
import './chunk-DVK4G2GT.mjs';
|
|
4
4
|
import './chunk-KA7LTET3.mjs';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
6
6
|
import './chunk-2CE3TQVY.mjs';
|
|
7
7
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/AlertBanner.js
CHANGED
|
@@ -102,6 +102,7 @@ function deriveColors(t, scheme) {
|
|
|
102
102
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
103
103
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
104
104
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
105
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
105
106
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
106
107
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
107
108
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -114,6 +115,7 @@ function deriveColors(t, scheme) {
|
|
|
114
115
|
foregroundMuted,
|
|
115
116
|
surface,
|
|
116
117
|
surfaceStrong,
|
|
118
|
+
skeleton,
|
|
117
119
|
destructiveTint,
|
|
118
120
|
destructiveBorder,
|
|
119
121
|
successTint,
|
package/dist/AlertBanner.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { AlertBanner } from './chunk-
|
|
1
|
+
export { AlertBanner } from './chunk-4OORJ2DY.mjs';
|
|
2
2
|
import './chunk-QY3X2UYR.mjs';
|
|
3
3
|
import './chunk-KA7LTET3.mjs';
|
|
4
|
-
import './chunk-
|
|
4
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
5
5
|
import './chunk-2CE3TQVY.mjs';
|
|
6
6
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/AppHeader.js
CHANGED
|
@@ -109,6 +109,7 @@ function deriveColors(t, scheme) {
|
|
|
109
109
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
110
110
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
111
111
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
112
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
112
113
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
113
114
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
114
115
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -121,6 +122,7 @@ function deriveColors(t, scheme) {
|
|
|
121
122
|
foregroundMuted,
|
|
122
123
|
surface,
|
|
123
124
|
surfaceStrong,
|
|
125
|
+
skeleton,
|
|
124
126
|
destructiveTint,
|
|
125
127
|
destructiveBorder,
|
|
126
128
|
successTint,
|
package/dist/AppHeader.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { AppHeader } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { AppHeader } from './chunk-MVMGPZN6.mjs';
|
|
2
|
+
import './chunk-LOBLCFMN.mjs';
|
|
3
3
|
import './chunk-3DKJ2GIC.mjs';
|
|
4
4
|
import './chunk-EJ7ZPXOH.mjs';
|
|
5
5
|
import './chunk-DVK4G2GT.mjs';
|
|
6
6
|
import './chunk-QY3X2UYR.mjs';
|
|
7
7
|
import './chunk-KA7LTET3.mjs';
|
|
8
|
-
import './chunk-
|
|
8
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
9
9
|
import './chunk-2CE3TQVY.mjs';
|
|
10
10
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/Avatar.js
CHANGED
|
@@ -89,6 +89,7 @@ function deriveColors(t, scheme) {
|
|
|
89
89
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
90
90
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
91
91
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
92
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
92
93
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
93
94
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
94
95
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -101,6 +102,7 @@ function deriveColors(t, scheme) {
|
|
|
101
102
|
foregroundMuted,
|
|
102
103
|
surface,
|
|
103
104
|
surfaceStrong,
|
|
105
|
+
skeleton,
|
|
104
106
|
destructiveTint,
|
|
105
107
|
destructiveBorder,
|
|
106
108
|
successTint,
|
package/dist/Avatar.mjs
CHANGED
package/dist/Badge.js
CHANGED
|
@@ -101,6 +101,7 @@ function deriveColors(t, scheme) {
|
|
|
101
101
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
102
102
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
103
103
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
104
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
104
105
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
105
106
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
106
107
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -113,6 +114,7 @@ function deriveColors(t, scheme) {
|
|
|
113
114
|
foregroundMuted,
|
|
114
115
|
surface,
|
|
115
116
|
surfaceStrong,
|
|
117
|
+
skeleton,
|
|
116
118
|
destructiveTint,
|
|
117
119
|
destructiveBorder,
|
|
118
120
|
successTint,
|
package/dist/Badge.mjs
CHANGED
package/dist/Button.js
CHANGED
|
@@ -162,6 +162,7 @@ function deriveColors(t, scheme) {
|
|
|
162
162
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
163
163
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
164
164
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
165
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
165
166
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
166
167
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
167
168
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -174,6 +175,7 @@ function deriveColors(t, scheme) {
|
|
|
174
175
|
foregroundMuted,
|
|
175
176
|
surface,
|
|
176
177
|
surfaceStrong,
|
|
178
|
+
skeleton,
|
|
177
179
|
destructiveTint,
|
|
178
180
|
destructiveBorder,
|
|
179
181
|
successTint,
|
|
@@ -342,24 +344,26 @@ function ButtonBase({
|
|
|
342
344
|
impactMedium();
|
|
343
345
|
onPress?.();
|
|
344
346
|
};
|
|
345
|
-
const containerVariantStyle = {
|
|
347
|
+
const containerVariantStyle = isDisabled ? {
|
|
348
|
+
primary: { backgroundColor: colors.surface },
|
|
349
|
+
secondary: { backgroundColor: "transparent", borderWidth: 1.5, borderColor: colors.border },
|
|
350
|
+
text: { backgroundColor: "transparent" },
|
|
351
|
+
destructive: { backgroundColor: colors.surface }
|
|
352
|
+
}[variant] : {
|
|
346
353
|
primary: { backgroundColor: colors.primary },
|
|
347
354
|
secondary: { backgroundColor: "transparent", borderWidth: 1.5, borderColor: colors.primary },
|
|
348
355
|
text: { backgroundColor: "transparent" },
|
|
349
356
|
destructive: { backgroundColor: colors.destructive }
|
|
350
357
|
}[variant];
|
|
351
|
-
const
|
|
352
|
-
primary:
|
|
353
|
-
secondary:
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
// carry the brand voltage. Falls back to primary when no accent is defined.
|
|
357
|
-
text: { color: colors.accentResolved },
|
|
358
|
-
destructive: { color: colors.destructiveForeground }
|
|
358
|
+
const labelColor = isDisabled ? colors.foregroundMuted : {
|
|
359
|
+
primary: colors.primaryForeground,
|
|
360
|
+
secondary: colors.primary,
|
|
361
|
+
text: colors.accentResolved,
|
|
362
|
+
destructive: colors.destructiveForeground
|
|
359
363
|
}[variant];
|
|
360
|
-
const textColor = iconColor ??
|
|
364
|
+
const textColor = iconColor ?? labelColor;
|
|
361
365
|
const effectiveIcon = iconName ? renderIcon(iconName, iconSizeMap[size], textColor) : typeof icon === "function" ? icon({ label, size, variant, color: textColor }) : icon;
|
|
362
|
-
const spinnerColor = variant === "destructive" ? colors.destructiveForeground : variant === "primary" ? colors.primaryForeground : colors.accentResolved;
|
|
366
|
+
const spinnerColor = isDisabled ? colors.foregroundMuted : variant === "destructive" ? colors.destructiveForeground : variant === "primary" ? colors.primaryForeground : colors.accentResolved;
|
|
363
367
|
const styleArray = Array.isArray(style) ? style : style ? [style] : [];
|
|
364
368
|
const flatStyle = reactNative.StyleSheet.flatten(styleArray);
|
|
365
369
|
const { flex, ...restStyle } = flatStyle || {};
|
|
@@ -371,7 +375,6 @@ function ButtonBase({
|
|
|
371
375
|
containerVariantStyle,
|
|
372
376
|
containerSizeStyles[size],
|
|
373
377
|
fullWidth && styles.fullWidth,
|
|
374
|
-
isDisabled && styles.disabled,
|
|
375
378
|
restStyle
|
|
376
379
|
],
|
|
377
380
|
enabled: !isDisabled,
|
|
@@ -387,7 +390,7 @@ function ButtonBase({
|
|
|
387
390
|
loading ? /* @__PURE__ */ React3__default.default.createElement(React3__default.default.Fragment, null, /* @__PURE__ */ React3__default.default.createElement(reactNative.ActivityIndicator, { size: "small", color: spinnerColor, style: { marginRight: s(6) } }), /* @__PURE__ */ React3__default.default.createElement(
|
|
388
391
|
reactNative.Text,
|
|
389
392
|
{
|
|
390
|
-
style: [styles.label,
|
|
393
|
+
style: [styles.label, { color: labelColor }, labelSizeStyles[size], styles.labelLoading],
|
|
391
394
|
allowFontScaling: true,
|
|
392
395
|
numberOfLines: 1
|
|
393
396
|
},
|
|
@@ -395,7 +398,7 @@ function ButtonBase({
|
|
|
395
398
|
)) : /* @__PURE__ */ React3__default.default.createElement(React3__default.default.Fragment, null, effectiveIcon && iconPosition === "left" && /* @__PURE__ */ React3__default.default.createElement(React3__default.default.Fragment, null, effectiveIcon), /* @__PURE__ */ React3__default.default.createElement(
|
|
396
399
|
reactNative.Text,
|
|
397
400
|
{
|
|
398
|
-
style: [styles.label,
|
|
401
|
+
style: [styles.label, { color: labelColor }, labelSizeStyles[size], effectiveIcon ? styles.labelWithIcon : void 0],
|
|
399
402
|
allowFontScaling: true,
|
|
400
403
|
numberOfLines: 1
|
|
401
404
|
},
|
|
@@ -414,9 +417,6 @@ var styles = reactNative.StyleSheet.create({
|
|
|
414
417
|
fullWidth: {
|
|
415
418
|
width: "100%"
|
|
416
419
|
},
|
|
417
|
-
disabled: {
|
|
418
|
-
opacity: 0.45
|
|
419
|
-
},
|
|
420
420
|
label: {
|
|
421
421
|
fontFamily: "Sohne-Medium",
|
|
422
422
|
flexShrink: 1
|
package/dist/Button.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { Button } from './chunk-
|
|
1
|
+
export { Button } from './chunk-4J2PXL36.mjs';
|
|
2
2
|
import './chunk-3DKJ2GIC.mjs';
|
|
3
3
|
import './chunk-EJ7ZPXOH.mjs';
|
|
4
4
|
import './chunk-DVK4G2GT.mjs';
|
|
5
5
|
import './chunk-QY3X2UYR.mjs';
|
|
6
6
|
import './chunk-KA7LTET3.mjs';
|
|
7
|
-
import './chunk-
|
|
7
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
8
8
|
import './chunk-2CE3TQVY.mjs';
|
|
9
9
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/Card.js
CHANGED
|
@@ -150,6 +150,7 @@ function deriveColors(t, scheme) {
|
|
|
150
150
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
151
151
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
152
152
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
153
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
153
154
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
154
155
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
155
156
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -162,6 +163,7 @@ function deriveColors(t, scheme) {
|
|
|
162
163
|
foregroundMuted,
|
|
163
164
|
surface,
|
|
164
165
|
surfaceStrong,
|
|
166
|
+
skeleton,
|
|
165
167
|
destructiveTint,
|
|
166
168
|
destructiveBorder,
|
|
167
169
|
successTint,
|
package/dist/Card.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './chunk-
|
|
1
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './chunk-BXF4AMHY.mjs';
|
|
2
2
|
import './chunk-3DKJ2GIC.mjs';
|
|
3
3
|
import './chunk-EJ7ZPXOH.mjs';
|
|
4
4
|
import './chunk-DVK4G2GT.mjs';
|
|
5
5
|
import './chunk-QY3X2UYR.mjs';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
7
7
|
import './chunk-2CE3TQVY.mjs';
|
|
8
8
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/CategoryStrip.js
CHANGED
|
@@ -163,6 +163,7 @@ function deriveColors(t, scheme) {
|
|
|
163
163
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
164
164
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
165
165
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
166
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
166
167
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
167
168
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
168
169
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -175,6 +176,7 @@ function deriveColors(t, scheme) {
|
|
|
175
176
|
foregroundMuted,
|
|
176
177
|
surface,
|
|
177
178
|
surfaceStrong,
|
|
179
|
+
skeleton,
|
|
178
180
|
destructiveTint,
|
|
179
181
|
destructiveBorder,
|
|
180
182
|
successTint,
|
package/dist/CategoryStrip.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { CategoryStrip } from './chunk-
|
|
1
|
+
export { CategoryStrip } from './chunk-3XCFYSX4.mjs';
|
|
2
2
|
import './chunk-YNROWHQJ.mjs';
|
|
3
3
|
import './chunk-EJ7ZPXOH.mjs';
|
|
4
4
|
import './chunk-DVK4G2GT.mjs';
|
|
5
5
|
import './chunk-QY3X2UYR.mjs';
|
|
6
6
|
import './chunk-KA7LTET3.mjs';
|
|
7
|
-
import './chunk-
|
|
7
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
8
8
|
import './chunk-2CE3TQVY.mjs';
|
|
9
9
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/Checkbox.js
CHANGED
|
@@ -151,6 +151,7 @@ function deriveColors(t, scheme) {
|
|
|
151
151
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
152
152
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
153
153
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
154
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
154
155
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
155
156
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
156
157
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -163,6 +164,7 @@ function deriveColors(t, scheme) {
|
|
|
163
164
|
foregroundMuted,
|
|
164
165
|
surface,
|
|
165
166
|
surfaceStrong,
|
|
167
|
+
skeleton,
|
|
166
168
|
destructiveTint,
|
|
167
169
|
destructiveBorder,
|
|
168
170
|
successTint,
|
package/dist/Checkbox.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { Checkbox } from './chunk-
|
|
1
|
+
export { Checkbox } from './chunk-UBUXUMER.mjs';
|
|
2
2
|
import './chunk-3DKJ2GIC.mjs';
|
|
3
3
|
import './chunk-EJ7ZPXOH.mjs';
|
|
4
4
|
import './chunk-DVK4G2GT.mjs';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
6
6
|
import './chunk-2CE3TQVY.mjs';
|
|
7
7
|
import './chunk-Y6FXYEAI.mjs';
|
package/dist/Chip.js
CHANGED
|
@@ -163,6 +163,7 @@ function deriveColors(t, scheme) {
|
|
|
163
163
|
const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
|
|
164
164
|
const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
|
|
165
165
|
const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
|
|
166
|
+
const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
|
|
166
167
|
const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
|
|
167
168
|
const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
|
|
168
169
|
const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
|
|
@@ -175,6 +176,7 @@ function deriveColors(t, scheme) {
|
|
|
175
176
|
foregroundMuted,
|
|
176
177
|
surface,
|
|
177
178
|
surfaceStrong,
|
|
179
|
+
skeleton,
|
|
178
180
|
destructiveTint,
|
|
179
181
|
destructiveBorder,
|
|
180
182
|
successTint,
|
package/dist/Chip.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { Chip, ChipGroup } from './chunk-
|
|
1
|
+
export { Chip, ChipGroup } from './chunk-F3YTWO3T.mjs';
|
|
2
2
|
import './chunk-3DKJ2GIC.mjs';
|
|
3
3
|
import './chunk-EJ7ZPXOH.mjs';
|
|
4
4
|
import './chunk-DVK4G2GT.mjs';
|
|
5
5
|
import './chunk-KA7LTET3.mjs';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-YTXRIXNZ.mjs';
|
|
7
7
|
import './chunk-2CE3TQVY.mjs';
|
|
8
8
|
import './chunk-Y6FXYEAI.mjs';
|