@krizaka/ui 3.3.0 → 3.4.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/dist/activity-feed.d.ts +199 -0
- package/dist/activity-feed.js +155 -0
- package/dist/activity-feed.js.map +1 -0
- package/dist/argument-card.js +3 -3
- package/dist/chunk-7Z4KHPFC.js +42 -0
- package/dist/chunk-7Z4KHPFC.js.map +1 -0
- package/dist/data-table.js +98 -131
- package/dist/data-table.js.map +1 -1
- package/dist/description-list.d.ts +105 -0
- package/dist/description-list.js +49 -0
- package/dist/description-list.js.map +1 -0
- package/dist/index.js +13 -66
- package/dist/index.js.map +1 -1
- package/dist/kanban.d.ts +132 -0
- package/dist/kanban.js +187 -0
- package/dist/kanban.js.map +1 -0
- package/dist/list.d.ts +153 -0
- package/dist/list.js +130 -0
- package/dist/list.js.map +1 -0
- package/dist/map.d.ts +463 -0
- package/dist/map.js +952 -0
- package/dist/map.js.map +1 -0
- package/dist/motion.css +12 -1
- package/dist/native/map.d.ts +200 -0
- package/dist/native/map.js +673 -0
- package/dist/native/map.js.map +1 -0
- package/dist/native/media-picker.d.ts +58 -0
- package/dist/native/media-picker.js +63 -0
- package/dist/native/media-picker.js.map +1 -0
- package/dist/native.d.ts +568 -6
- package/dist/native.js +1989 -868
- package/dist/native.js.map +1 -1
- package/dist/page-hero.js +3 -3
- package/dist/stat.d.ts +31 -2
- package/dist/stat.js +21 -4
- package/dist/stat.js.map +1 -1
- package/dist/tree-view.d.ts +111 -0
- package/dist/tree-view.js +154 -0
- package/dist/tree-view.js.map +1 -0
- package/package.json +147 -10
- package/registry/achievement.json +1 -1
- package/registry/action-bar.json +1 -1
- package/registry/action-sheet.json +121 -0
- package/registry/activity-feed.json +468 -0
- package/registry/alert.json +1 -1
- package/registry/app-shell.json +1 -1
- package/registry/argument-card.json +1 -1
- package/registry/audio-player.json +1 -1
- package/registry/auth-layout.json +1 -1
- package/registry/avatar.json +58 -3
- package/registry/badge.json +1 -1
- package/registry/button.json +1 -1
- package/registry/card-grid.json +1 -1
- package/registry/card.json +1 -1
- package/registry/catalogue-page.json +1 -1
- package/registry/changelog-page.json +1 -1
- package/registry/checkbox.json +1 -1
- package/registry/chip-link.json +1 -1
- package/registry/chip.json +1 -1
- package/registry/choice-grid.json +1 -1
- package/registry/code-block.json +1 -1
- package/registry/combobox.json +1 -1
- package/registry/command.json +1 -1
- package/registry/component-page.json +1 -1
- package/registry/confirm-button.json +1 -1
- package/registry/contact-page.json +1 -1
- package/registry/continue-prompt.json +1 -1
- package/registry/countdown.json +1 -1
- package/registry/cta-panel.json +1 -1
- package/registry/dashboard-layout.json +1 -1
- package/registry/data-table.json +1 -1
- package/registry/date-picker.json +2 -2
- package/registry/decision-list.json +1 -1
- package/registry/description-list.json +232 -0
- package/registry/detail-layout.json +1 -1
- package/registry/dialog.json +1 -1
- package/registry/docs-article-page.json +1 -1
- package/registry/docs-hub-page.json +1 -1
- package/registry/docs-layout.json +1 -1
- package/registry/dropdown-menu.json +1 -1
- package/registry/empty-state.json +1 -1
- package/registry/error-page.json +1 -1
- package/registry/examples/action-sheet/native/video-actions.d.ts +4 -0
- package/registry/examples/action-sheet/native/video-actions.dark.png +0 -0
- package/registry/examples/action-sheet/native/video-actions.js +30 -0
- package/registry/examples/action-sheet/native/video-actions.light.png +0 -0
- package/registry/examples/action-sheet/native/video-actions.tsx +24 -0
- package/registry/examples/activity-feed/job-activity.d.ts +4 -0
- package/registry/examples/activity-feed/job-activity.js +21 -0
- package/registry/examples/activity-feed/job-activity.tsx +17 -0
- package/registry/examples/activity-feed/live.d.ts +4 -0
- package/registry/examples/activity-feed/live.js +23 -0
- package/registry/examples/activity-feed/live.tsx +24 -0
- package/registry/examples/activity-feed/native/notifications.d.ts +4 -0
- package/registry/examples/activity-feed/native/notifications.dark.png +0 -0
- package/registry/examples/activity-feed/native/notifications.js +18 -0
- package/registry/examples/activity-feed/native/notifications.light.png +0 -0
- package/registry/examples/activity-feed/native/notifications.tsx +18 -0
- package/registry/examples/activity-feed/timeline.d.ts +4 -0
- package/registry/examples/activity-feed/timeline.js +25 -0
- package/registry/examples/activity-feed/timeline.tsx +19 -0
- package/registry/examples/avatar/native/presence.d.ts +4 -0
- package/registry/examples/avatar/native/presence.dark.png +0 -0
- package/registry/examples/avatar/native/presence.js +18 -0
- package/registry/examples/avatar/native/presence.light.png +0 -0
- package/registry/examples/avatar/native/presence.tsx +15 -0
- package/registry/examples/description-list/job-details.d.ts +4 -0
- package/registry/examples/description-list/job-details.js +23 -0
- package/registry/examples/description-list/job-details.tsx +17 -0
- package/registry/examples/description-list/key-value-grid.d.ts +4 -0
- package/registry/examples/description-list/key-value-grid.js +22 -0
- package/registry/examples/description-list/key-value-grid.tsx +16 -0
- package/registry/examples/description-list/native/job-details.d.ts +4 -0
- package/registry/examples/description-list/native/job-details.dark.png +0 -0
- package/registry/examples/description-list/native/job-details.js +33 -0
- package/registry/examples/description-list/native/job-details.light.png +0 -0
- package/registry/examples/description-list/native/job-details.tsx +24 -0
- package/registry/examples/description-list/receipt.d.ts +4 -0
- package/registry/examples/description-list/receipt.js +23 -0
- package/registry/examples/description-list/receipt.tsx +17 -0
- package/registry/examples/fab/native/extended.d.ts +4 -0
- package/registry/examples/fab/native/extended.dark.png +0 -0
- package/registry/examples/fab/native/extended.js +18 -0
- package/registry/examples/fab/native/extended.light.png +0 -0
- package/registry/examples/fab/native/extended.tsx +23 -0
- package/registry/examples/header/native/large-title.d.ts +4 -0
- package/registry/examples/header/native/large-title.dark.png +0 -0
- package/registry/examples/header/native/large-title.js +23 -0
- package/registry/examples/header/native/large-title.light.png +0 -0
- package/registry/examples/header/native/large-title.tsx +31 -0
- package/registry/examples/image-viewer/native/gallery.d.ts +4 -0
- package/registry/examples/image-viewer/native/gallery.dark.png +0 -0
- package/registry/examples/image-viewer/native/gallery.js +22 -0
- package/registry/examples/image-viewer/native/gallery.light.png +0 -0
- package/registry/examples/image-viewer/native/gallery.tsx +21 -0
- package/registry/examples/kanban/moderation.d.ts +4 -0
- package/registry/examples/kanban/moderation.js +35 -0
- package/registry/examples/kanban/moderation.tsx +37 -0
- package/registry/examples/list/jobs.d.ts +4 -0
- package/registry/examples/list/jobs.js +35 -0
- package/registry/examples/list/jobs.tsx +33 -0
- package/registry/examples/list/selectable.d.ts +4 -0
- package/registry/examples/list/selectable.js +33 -0
- package/registry/examples/list/selectable.tsx +30 -0
- package/registry/examples/list/virtualized.d.ts +4 -0
- package/registry/examples/list/virtualized.js +22 -0
- package/registry/examples/list/virtualized.tsx +17 -0
- package/registry/examples/loader/native/block.d.ts +4 -0
- package/registry/examples/loader/native/block.dark.png +0 -0
- package/registry/examples/loader/native/block.js +12 -0
- package/registry/examples/loader/native/block.light.png +0 -0
- package/registry/examples/loader/native/block.tsx +11 -0
- package/registry/examples/loader/native/job-wait.d.ts +4 -0
- package/registry/examples/loader/native/job-wait.dark.png +0 -0
- package/registry/examples/loader/native/job-wait.js +17 -0
- package/registry/examples/loader/native/job-wait.light.png +0 -0
- package/registry/examples/loader/native/job-wait.tsx +14 -0
- package/registry/examples/map/cluster.d.ts +4 -0
- package/registry/examples/map/cluster.js +16 -0
- package/registry/examples/map/cluster.tsx +18 -0
- package/registry/examples/map/location-picker.d.ts +4 -0
- package/registry/examples/map/location-picker.js +24 -0
- package/registry/examples/map/location-picker.tsx +22 -0
- package/registry/examples/map/native/location-picker.d.ts +4 -0
- package/registry/examples/map/native/location-picker.dark.png +0 -0
- package/registry/examples/map/native/location-picker.js +14 -0
- package/registry/examples/map/native/location-picker.light.png +0 -0
- package/registry/examples/map/native/location-picker.tsx +13 -0
- package/registry/examples/map/native/places.d.ts +4 -0
- package/registry/examples/map/native/places.dark.png +0 -0
- package/registry/examples/map/native/places.js +25 -0
- package/registry/examples/map/native/places.light.png +0 -0
- package/registry/examples/map/native/places.tsx +27 -0
- package/registry/examples/map/places.d.ts +4 -0
- package/registry/examples/map/places.js +28 -0
- package/registry/examples/map/places.tsx +28 -0
- package/registry/examples/map/static.d.ts +4 -0
- package/registry/examples/map/static.js +22 -0
- package/registry/examples/map/static.tsx +18 -0
- package/registry/examples/media-picker/native/story.d.ts +4 -0
- package/registry/examples/media-picker/native/story.dark.png +0 -0
- package/registry/examples/media-picker/native/story.js +30 -0
- package/registry/examples/media-picker/native/story.light.png +0 -0
- package/registry/examples/media-picker/native/story.tsx +26 -0
- package/registry/examples/meter/native/credits.d.ts +4 -0
- package/registry/examples/meter/native/credits.dark.png +0 -0
- package/registry/examples/meter/native/credits.js +15 -0
- package/registry/examples/meter/native/credits.light.png +0 -0
- package/registry/examples/meter/native/credits.tsx +12 -0
- package/registry/examples/meter/native/split-ring.d.ts +4 -0
- package/registry/examples/meter/native/split-ring.dark.png +0 -0
- package/registry/examples/meter/native/split-ring.js +24 -0
- package/registry/examples/meter/native/split-ring.light.png +0 -0
- package/registry/examples/meter/native/split-ring.tsx +19 -0
- package/registry/examples/number-ticker/native/balance.d.ts +4 -0
- package/registry/examples/number-ticker/native/balance.dark.png +0 -0
- package/registry/examples/number-ticker/native/balance.js +18 -0
- package/registry/examples/number-ticker/native/balance.light.png +0 -0
- package/registry/examples/number-ticker/native/balance.tsx +17 -0
- package/registry/examples/onboarding/native/first-launch.d.ts +4 -0
- package/registry/examples/onboarding/native/first-launch.dark.png +0 -0
- package/registry/examples/onboarding/native/first-launch.js +23 -0
- package/registry/examples/onboarding/native/first-launch.light.png +0 -0
- package/registry/examples/onboarding/native/first-launch.tsx +19 -0
- package/registry/examples/otp-input/native/invalid.d.ts +4 -0
- package/registry/examples/otp-input/native/invalid.dark.png +0 -0
- package/registry/examples/otp-input/native/invalid.js +15 -0
- package/registry/examples/otp-input/native/invalid.light.png +0 -0
- package/registry/examples/otp-input/native/invalid.tsx +14 -0
- package/registry/examples/otp-input/native/verify.d.ts +4 -0
- package/registry/examples/otp-input/native/verify.dark.png +0 -0
- package/registry/examples/otp-input/native/verify.js +17 -0
- package/registry/examples/otp-input/native/verify.light.png +0 -0
- package/registry/examples/otp-input/native/verify.tsx +14 -0
- package/registry/examples/permission-prompt/native/blocked.d.ts +4 -0
- package/registry/examples/permission-prompt/native/blocked.dark.png +0 -0
- package/registry/examples/permission-prompt/native/blocked.js +25 -0
- package/registry/examples/permission-prompt/native/blocked.light.png +0 -0
- package/registry/examples/permission-prompt/native/blocked.tsx +21 -0
- package/registry/examples/permission-prompt/native/camera.d.ts +4 -0
- package/registry/examples/permission-prompt/native/camera.dark.png +0 -0
- package/registry/examples/permission-prompt/native/camera.js +25 -0
- package/registry/examples/permission-prompt/native/camera.light.png +0 -0
- package/registry/examples/permission-prompt/native/camera.tsx +21 -0
- package/registry/examples/pull-to-refresh/native/feed.d.ts +4 -0
- package/registry/examples/pull-to-refresh/native/feed.dark.png +0 -0
- package/registry/examples/pull-to-refresh/native/feed.js +14 -0
- package/registry/examples/pull-to-refresh/native/feed.light.png +0 -0
- package/registry/examples/pull-to-refresh/native/feed.tsx +19 -0
- package/registry/examples/search-field/native/cancel.d.ts +4 -0
- package/registry/examples/search-field/native/cancel.dark.png +0 -0
- package/registry/examples/search-field/native/cancel.js +14 -0
- package/registry/examples/search-field/native/cancel.light.png +0 -0
- package/registry/examples/search-field/native/cancel.tsx +13 -0
- package/registry/examples/stat/grid.d.ts +4 -0
- package/registry/examples/stat/grid.js +17 -0
- package/registry/examples/stat/grid.tsx +14 -0
- package/registry/examples/stepper/native/run.d.ts +4 -0
- package/registry/examples/stepper/native/run.dark.png +0 -0
- package/registry/examples/stepper/native/run.js +24 -0
- package/registry/examples/stepper/native/run.light.png +0 -0
- package/registry/examples/stepper/native/run.tsx +20 -0
- package/registry/examples/swipeable-row/native/conversation.d.ts +4 -0
- package/registry/examples/swipeable-row/native/conversation.dark.png +0 -0
- package/registry/examples/swipeable-row/native/conversation.js +30 -0
- package/registry/examples/swipeable-row/native/conversation.light.png +0 -0
- package/registry/examples/swipeable-row/native/conversation.tsx +27 -0
- package/registry/examples/tab-bar/native/main-sections.d.ts +4 -0
- package/registry/examples/tab-bar/native/main-sections.dark.png +0 -0
- package/registry/examples/tab-bar/native/main-sections.js +29 -0
- package/registry/examples/tab-bar/native/main-sections.light.png +0 -0
- package/registry/examples/tab-bar/native/main-sections.tsx +30 -0
- package/registry/examples/tabs/native/sections.d.ts +4 -0
- package/registry/examples/tabs/native/sections.dark.png +0 -0
- package/registry/examples/tabs/native/sections.js +23 -0
- package/registry/examples/tabs/native/sections.light.png +0 -0
- package/registry/examples/tabs/native/sections.tsx +19 -0
- package/registry/examples/tabs/native/segmented.d.ts +4 -0
- package/registry/examples/tabs/native/segmented.dark.png +0 -0
- package/registry/examples/tabs/native/segmented.js +22 -0
- package/registry/examples/tabs/native/segmented.light.png +0 -0
- package/registry/examples/tabs/native/segmented.tsx +18 -0
- package/registry/examples/toast/native/snackbar.d.ts +4 -0
- package/registry/examples/toast/native/snackbar.dark.png +0 -0
- package/registry/examples/toast/native/snackbar.js +23 -0
- package/registry/examples/toast/native/snackbar.light.png +0 -0
- package/registry/examples/toast/native/snackbar.tsx +21 -0
- package/registry/examples/tree-view/docs.d.ts +4 -0
- package/registry/examples/tree-view/docs.js +24 -0
- package/registry/examples/tree-view/docs.tsx +22 -0
- package/registry/examples/tree-view/lazy.d.ts +4 -0
- package/registry/examples/tree-view/lazy.js +21 -0
- package/registry/examples/tree-view/lazy.tsx +19 -0
- package/registry/fab.json +122 -0
- package/registry/field.json +1 -1
- package/registry/file-upload.json +2 -2
- package/registry/filter-bar.json +1 -1
- package/registry/form.json +2 -2
- package/registry/gallery-page.json +1 -1
- package/registry/glow-card.json +1 -1
- package/registry/goal-gauge.json +1 -1
- package/registry/header.json +137 -0
- package/registry/how-it-works-page.json +1 -1
- package/registry/image-cropper.json +1 -1
- package/registry/image-viewer.json +107 -0
- package/registry/index.json +299 -25
- package/registry/iso.json +1 -1
- package/registry/kanban.json +253 -0
- package/registry/kbd.json +1 -1
- package/registry/landing-page.json +1 -1
- package/registry/landscape.json +1 -1
- package/registry/legal-page.json +1 -1
- package/registry/link-card.json +1 -1
- package/registry/list.json +367 -30
- package/registry/loader.json +157 -4
- package/registry/longform-page.json +1 -1
- package/registry/map.json +1368 -0
- package/registry/marketing-layout.json +1 -1
- package/registry/marquee.json +1 -1
- package/registry/mascot-quote.json +1 -1
- package/registry/mascot-state.json +1 -1
- package/registry/mascots.json +1 -1
- package/registry/media-capture.json +1 -1
- package/registry/media-picker.json +129 -0
- package/registry/meter.json +136 -4
- package/registry/nav-bar.json +1 -1
- package/registry/number-ticker.json +96 -4
- package/registry/onboarding.json +95 -0
- package/registry/otp-input.json +150 -0
- package/registry/page-header.json +1 -1
- package/registry/page-hero.json +1 -1
- package/registry/page.json +1 -1
- package/registry/pagination.json +1 -1
- package/registry/permission-prompt.json +172 -0
- package/registry/pointer-light.json +1 -1
- package/registry/popover.json +1 -1
- package/registry/pricing-page.json +1 -1
- package/registry/product-page.json +1 -1
- package/registry/profile-card.json +1 -1
- package/registry/progress.json +2 -2
- package/registry/promise-card.json +1 -1
- package/registry/pull-to-refresh.json +74 -0
- package/registry/radio-group.json +1 -1
- package/registry/scroll-stage.json +1 -1
- package/registry/search-field.json +30 -3
- package/registry/section-backdrop.json +1 -1
- package/registry/separator.json +1 -1
- package/registry/settings-layout.json +1 -1
- package/registry/skeleton.json +1 -1
- package/registry/slider.json +1 -1
- package/registry/slot.json +1 -1
- package/registry/spinner.json +1 -1
- package/registry/split-view.json +1 -1
- package/registry/stage-banner.json +1 -1
- package/registry/stat.json +68 -5
- package/registry/status-page.json +1 -1
- package/registry/stepper.json +75 -4
- package/registry/swipeable-row.json +124 -0
- package/registry/switch.json +1 -1
- package/registry/tab-bar.json +115 -0
- package/registry/tabs.json +94 -4
- package/registry/tag-input.json +1 -1
- package/registry/terminal-replay.json +1 -1
- package/registry/theme.json +8 -1
- package/registry/toast.json +17 -3
- package/registry/toc.json +1 -1
- package/registry/tooltip.json +1 -1
- package/registry/tree-view.json +291 -0
- package/registry/video-player.json +1 -1
- package/registry/video-trimmer.json +1 -1
- package/registry/virtual.json +1 -1
- package/skills/map/SKILL.md +35 -0
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/permission-prompt/native/blocked.tsx
|
|
4
|
+
import { PermissionPrompt } from "@krizaka/ui/native";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
function NativePermissionPromptBlocked() {
|
|
8
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 340 }, children: /* @__PURE__ */ jsx(
|
|
9
|
+
PermissionPrompt,
|
|
10
|
+
{
|
|
11
|
+
status: "blocked",
|
|
12
|
+
mascot: "pigeon",
|
|
13
|
+
title: "Know when you are outbid",
|
|
14
|
+
description: "Turn on notifications to hear about your auctions.",
|
|
15
|
+
blockedDescription: "Notifications are off for Orochia. Turn them on in the settings to hear when you are outbid.",
|
|
16
|
+
allowLabel: "Turn on notifications",
|
|
17
|
+
onAllow: () => void 0,
|
|
18
|
+
settingsLabel: "Open the settings",
|
|
19
|
+
onOpenSettings: () => void 0
|
|
20
|
+
}
|
|
21
|
+
) });
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
NativePermissionPromptBlocked as default
|
|
25
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { PermissionPrompt } from "@krizaka/ui/native";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
|
|
4
|
+
// The system will not ask again: the way to the settings, the pigeon for notifications.
|
|
5
|
+
export default function NativePermissionPromptBlocked() {
|
|
6
|
+
return (
|
|
7
|
+
<View style={{ width: 340 }}>
|
|
8
|
+
<PermissionPrompt
|
|
9
|
+
status="blocked"
|
|
10
|
+
mascot="pigeon"
|
|
11
|
+
title="Know when you are outbid"
|
|
12
|
+
description="Turn on notifications to hear about your auctions."
|
|
13
|
+
blockedDescription="Notifications are off for Orochia. Turn them on in the settings to hear when you are outbid."
|
|
14
|
+
allowLabel="Turn on notifications"
|
|
15
|
+
onAllow={() => undefined}
|
|
16
|
+
settingsLabel="Open the settings"
|
|
17
|
+
onOpenSettings={() => undefined}
|
|
18
|
+
/>
|
|
19
|
+
</View>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/permission-prompt/native/camera.tsx
|
|
4
|
+
import { PermissionPrompt } from "@krizaka/ui/native";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
import { View } from "react-native";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
function NativePermissionPromptCamera() {
|
|
9
|
+
const [status, setStatus] = useState("undetermined");
|
|
10
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 340 }, children: /* @__PURE__ */ jsx(
|
|
11
|
+
PermissionPrompt,
|
|
12
|
+
{
|
|
13
|
+
status,
|
|
14
|
+
title: "Film your answer",
|
|
15
|
+
description: "Orochia uses the camera only while you record a challenge. Nothing is filmed before you press record.",
|
|
16
|
+
allowLabel: "Allow the camera",
|
|
17
|
+
onAllow: () => setStatus("granted"),
|
|
18
|
+
dismissLabel: "Not now",
|
|
19
|
+
onDismiss: () => void 0
|
|
20
|
+
}
|
|
21
|
+
) });
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
NativePermissionPromptCamera as default
|
|
25
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { PermissionPrompt } from "@krizaka/ui/native";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { View } from "react-native";
|
|
4
|
+
|
|
5
|
+
// Before the system asks: why the camera, the button that asks, a way out.
|
|
6
|
+
export default function NativePermissionPromptCamera() {
|
|
7
|
+
const [status, setStatus] = useState<"undetermined" | "granted">("undetermined");
|
|
8
|
+
return (
|
|
9
|
+
<View style={{ width: 340 }}>
|
|
10
|
+
<PermissionPrompt
|
|
11
|
+
status={status}
|
|
12
|
+
title="Film your answer"
|
|
13
|
+
description="Orochia uses the camera only while you record a challenge. Nothing is filmed before you press record."
|
|
14
|
+
allowLabel="Allow the camera"
|
|
15
|
+
onAllow={() => setStatus("granted")}
|
|
16
|
+
dismissLabel="Not now"
|
|
17
|
+
onDismiss={() => undefined}
|
|
18
|
+
/>
|
|
19
|
+
</View>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/pull-to-refresh/native/feed.tsx
|
|
4
|
+
import { PullToRefresh, Txt } from "@krizaka/ui/native";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
import { ScrollView, View } from "react-native";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
function NativePullToRefreshFeed() {
|
|
9
|
+
const [refreshing, setRefreshing] = useState(true);
|
|
10
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 360, height: 240 }, children: /* @__PURE__ */ jsx(ScrollView, { refreshControl: /* @__PURE__ */ jsx(PullToRefresh, { refreshing, onRefresh: () => setRefreshing(false), label: "Pull to refresh" }), children: ["Sunset session \xB7 Elena \xB7 2.4K views", "Acoustic dare \xB7 Alex \xB7 918 views"].map((line) => /* @__PURE__ */ jsx(Txt, { style: { padding: 16 }, children: line }, line)) }) });
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
NativePullToRefreshFeed as default
|
|
14
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { PullToRefresh, Txt } from "@krizaka/ui/native";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { ScrollView, View } from "react-native";
|
|
4
|
+
|
|
5
|
+
// The platform's pull to refresh, in the accent: the `refreshControl` of any ScrollView.
|
|
6
|
+
export default function NativePullToRefreshFeed() {
|
|
7
|
+
const [refreshing, setRefreshing] = useState(true);
|
|
8
|
+
return (
|
|
9
|
+
<View style={{ width: 360, height: 240 }}>
|
|
10
|
+
<ScrollView refreshControl={<PullToRefresh refreshing={refreshing} onRefresh={() => setRefreshing(false)} label="Pull to refresh" />}>
|
|
11
|
+
{["Sunset session · Elena · 2.4K views", "Acoustic dare · Alex · 918 views"].map((line) => (
|
|
12
|
+
<Txt key={line} style={{ padding: 16 }}>
|
|
13
|
+
{line}
|
|
14
|
+
</Txt>
|
|
15
|
+
))}
|
|
16
|
+
</ScrollView>
|
|
17
|
+
</View>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/search-field/native/cancel.tsx
|
|
4
|
+
import { SearchField } from "@krizaka/ui/native";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
import { View } from "react-native";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
function NativeSearchFieldCancel() {
|
|
9
|
+
const [query, setQuery] = useState("acoustic");
|
|
10
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 340 }, children: /* @__PURE__ */ jsx(SearchField, { label: "Search creators", placeholder: "Search creators", value: query, onValueChange: setQuery, clearLabel: "Clear search", cancelLabel: "Cancel", onCancel: () => void 0 }) });
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
NativeSearchFieldCancel as default
|
|
14
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SearchField } from "@krizaka/ui/native";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { View } from "react-native";
|
|
4
|
+
|
|
5
|
+
// A search bar with its Cancel button: shown while there is a query, it clears it and closes the keyboard.
|
|
6
|
+
export default function NativeSearchFieldCancel() {
|
|
7
|
+
const [query, setQuery] = useState("acoustic");
|
|
8
|
+
return (
|
|
9
|
+
<View style={{ width: 340 }}>
|
|
10
|
+
<SearchField label="Search creators" placeholder="Search creators" value={query} onValueChange={setQuery} clearLabel="Clear search" cancelLabel="Cancel" onCancel={() => undefined} />
|
|
11
|
+
</View>
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/stat/grid.tsx
|
|
4
|
+
import { Meter } from "@krizaka/ui/meter";
|
|
5
|
+
import { Stat, StatGrid } from "@krizaka/ui/stat";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
function StatGridExample() {
|
|
8
|
+
return /* @__PURE__ */ jsxs(StatGrid, { children: [
|
|
9
|
+
/* @__PURE__ */ jsx(Stat, { label: "Gross volume", value: "$21,045", trend: "up", trendLabel: "+15 %", hint: "vs September" }),
|
|
10
|
+
/* @__PURE__ */ jsx(Stat, { label: "Creator earnings", value: "$17,888", trend: "up", trendLabel: "+16 %", hint: "net of fees" }),
|
|
11
|
+
/* @__PURE__ */ jsx(Stat, { label: "Open reports", value: "7", trend: "down", trendLabel: "\u22123", hint: "since yesterday" }),
|
|
12
|
+
/* @__PURE__ */ jsx(Stat, { label: "Storage", value: "1.74 TB", hint: "of 2 TB", chart: /* @__PURE__ */ jsx(Meter, { label: "Storage used", value: 87, thresholds: { low: 0.8, high: 0.95 } }) })
|
|
13
|
+
] });
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
StatGridExample as default
|
|
17
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Meter } from "@krizaka/ui/meter";
|
|
2
|
+
import { Stat, StatGrid } from "@krizaka/ui/stat";
|
|
3
|
+
|
|
4
|
+
// The console's head: figures that wrap with the width, hairlines between them; a meter under the storage.
|
|
5
|
+
export default function StatGridExample() {
|
|
6
|
+
return (
|
|
7
|
+
<StatGrid>
|
|
8
|
+
<Stat label="Gross volume" value="$21,045" trend="up" trendLabel="+15 %" hint="vs September" />
|
|
9
|
+
<Stat label="Creator earnings" value="$17,888" trend="up" trendLabel="+16 %" hint="net of fees" />
|
|
10
|
+
<Stat label="Open reports" value="7" trend="down" trendLabel="−3" hint="since yesterday" />
|
|
11
|
+
<Stat label="Storage" value="1.74 TB" hint="of 2 TB" chart={<Meter label="Storage used" value={87} thresholds={{ low: 0.8, high: 0.95 }} />} />
|
|
12
|
+
</StatGrid>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/stepper/native/run.tsx
|
|
4
|
+
import { Progress, Stepper } from "@krizaka/ui/native";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
function NativeStepperRun() {
|
|
8
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 320 }, children: /* @__PURE__ */ jsx(
|
|
9
|
+
Stepper,
|
|
10
|
+
{
|
|
11
|
+
"aria-label": "Run of the dubbing studio",
|
|
12
|
+
current: 2,
|
|
13
|
+
steps: [
|
|
14
|
+
{ title: "Transcribe", description: "French \xB7 2 min 14 s" },
|
|
15
|
+
{ title: "Translate", description: "English, Spanish" },
|
|
16
|
+
{ title: "Synthesise voices", value: 0.6, content: /* @__PURE__ */ jsx(Progress, { label: "Voices", value: 60, size: "sm" }) },
|
|
17
|
+
{ title: "Mix and export" }
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
) });
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
NativeStepperRun as default
|
|
24
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Progress, Stepper } from "@krizaka/ui/native";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
|
|
4
|
+
// An Orazaka studio run: two steps done, the third tracing its progress, the last to come.
|
|
5
|
+
export default function NativeStepperRun() {
|
|
6
|
+
return (
|
|
7
|
+
<View style={{ width: 320 }}>
|
|
8
|
+
<Stepper
|
|
9
|
+
aria-label="Run of the dubbing studio"
|
|
10
|
+
current={2}
|
|
11
|
+
steps={[
|
|
12
|
+
{ title: "Transcribe", description: "French · 2 min 14 s" },
|
|
13
|
+
{ title: "Translate", description: "English, Spanish" },
|
|
14
|
+
{ title: "Synthesise voices", value: 0.6, content: <Progress label="Voices" value={60} size="sm" /> },
|
|
15
|
+
{ title: "Mix and export" },
|
|
16
|
+
]}
|
|
17
|
+
/>
|
|
18
|
+
</View>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/swipeable-row/native/conversation.tsx
|
|
4
|
+
import { Avatar, SwipeableRow, Txt } from "@krizaka/ui/native";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
function NativeSwipeableRowConversation() {
|
|
8
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 360 }, children: /* @__PURE__ */ jsx(
|
|
9
|
+
SwipeableRow,
|
|
10
|
+
{
|
|
11
|
+
leading: [{ label: "Pin", tone: "accent", onPress: () => void 0 }],
|
|
12
|
+
trailing: [
|
|
13
|
+
{ label: "Delete", tone: "danger", onPress: () => void 0 },
|
|
14
|
+
{ label: "Archive", onPress: () => void 0 }
|
|
15
|
+
],
|
|
16
|
+
onActivate: () => void 0,
|
|
17
|
+
children: /* @__PURE__ */ jsxs(View, { style: { flexDirection: "row", alignItems: "center", gap: 12, padding: 12 }, children: [
|
|
18
|
+
/* @__PURE__ */ jsx(Avatar, { alt: "Elena", presence: "online", presenceLabel: "online" }),
|
|
19
|
+
/* @__PURE__ */ jsxs(View, { style: { flex: 1 }, children: [
|
|
20
|
+
/* @__PURE__ */ jsx(Txt, { variant: "label", children: "Elena" }),
|
|
21
|
+
/* @__PURE__ */ jsx(Txt, { variant: "caption", tone: "secondary", children: "Sending the stems tonight \u{1F3A7}" })
|
|
22
|
+
] }),
|
|
23
|
+
/* @__PURE__ */ jsx(Txt, { variant: "caption", tone: "secondary", children: "2 min" })
|
|
24
|
+
] })
|
|
25
|
+
}
|
|
26
|
+
) });
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
NativeSwipeableRowConversation as default
|
|
30
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Avatar, SwipeableRow, Txt } from "@krizaka/ui/native";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
|
|
4
|
+
// Swipe left to archive or delete, right to pin; screen readers find the same actions in the rotor.
|
|
5
|
+
export default function NativeSwipeableRowConversation() {
|
|
6
|
+
return (
|
|
7
|
+
<View style={{ width: 360 }}>
|
|
8
|
+
<SwipeableRow
|
|
9
|
+
leading={[{ label: "Pin", tone: "accent", onPress: () => undefined }]}
|
|
10
|
+
trailing={[
|
|
11
|
+
{ label: "Delete", tone: "danger", onPress: () => undefined },
|
|
12
|
+
{ label: "Archive", onPress: () => undefined },
|
|
13
|
+
]}
|
|
14
|
+
onActivate={() => undefined}
|
|
15
|
+
>
|
|
16
|
+
<View style={{ flexDirection: "row", alignItems: "center", gap: 12, padding: 12 }}>
|
|
17
|
+
<Avatar alt="Elena" presence="online" presenceLabel="online" />
|
|
18
|
+
<View style={{ flex: 1 }}>
|
|
19
|
+
<Txt variant="label">Elena</Txt>
|
|
20
|
+
<Txt variant="caption" tone="secondary">Sending the stems tonight 🎧</Txt>
|
|
21
|
+
</View>
|
|
22
|
+
<Txt variant="caption" tone="secondary">2 min</Txt>
|
|
23
|
+
</View>
|
|
24
|
+
</SwipeableRow>
|
|
25
|
+
</View>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/tab-bar/native/main-sections.tsx
|
|
4
|
+
import { TabBar } from "@krizaka/ui/native";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
import { View } from "react-native";
|
|
7
|
+
import Svg, { Path } from "react-native-svg";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
var icon = (d) => (on, color) => /* @__PURE__ */ jsx(Svg, { width: 24, height: 24, viewBox: "0 0 24 24", fill: on ? color : "none", stroke: color, strokeWidth: 2, strokeLinejoin: "round", children: /* @__PURE__ */ jsx(Path, { d }) });
|
|
10
|
+
function NativeTabBarMainSections() {
|
|
11
|
+
const [tab, setTab] = useState("home");
|
|
12
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 360 }, children: /* @__PURE__ */ jsx(
|
|
13
|
+
TabBar,
|
|
14
|
+
{
|
|
15
|
+
"aria-label": "Main sections",
|
|
16
|
+
value: tab,
|
|
17
|
+
onValueChange: setTab,
|
|
18
|
+
items: [
|
|
19
|
+
{ value: "home", label: "Home", icon: icon("M3 11 12 4l9 7v9h-6v-6H9v6H3z") },
|
|
20
|
+
{ value: "auctions", label: "Auctions", icon: icon("M14 4l6 6-3 3-6-6zM11 7l-8 8 3 3 8-8M4 21h9") },
|
|
21
|
+
{ value: "messages", label: "Messages", badge: 3, badgeLabel: "3 unread", icon: icon("M4 5h16v11H8l-4 4z") },
|
|
22
|
+
{ value: "me", label: "Me", icon: icon("M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM4 21a8 8 0 0 1 16 0") }
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
) });
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
NativeTabBarMainSections as default
|
|
29
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { TabBar } from "@krizaka/ui/native";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { View } from "react-native";
|
|
4
|
+
import Svg, { Path } from "react-native-svg";
|
|
5
|
+
|
|
6
|
+
const icon = (d: string) => (on: boolean, color: string) => (
|
|
7
|
+
<Svg width={24} height={24} viewBox="0 0 24 24" fill={on ? color : "none"} stroke={color} strokeWidth={2} strokeLinejoin="round">
|
|
8
|
+
<Path d={d} />
|
|
9
|
+
</Svg>
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
// Orochia's main sections: the current one in the accent, a badge on Messages, a tick on change.
|
|
13
|
+
export default function NativeTabBarMainSections() {
|
|
14
|
+
const [tab, setTab] = useState<"home" | "auctions" | "messages" | "me">("home");
|
|
15
|
+
return (
|
|
16
|
+
<View style={{ width: 360 }}>
|
|
17
|
+
<TabBar
|
|
18
|
+
aria-label="Main sections"
|
|
19
|
+
value={tab}
|
|
20
|
+
onValueChange={setTab}
|
|
21
|
+
items={[
|
|
22
|
+
{ value: "home", label: "Home", icon: icon("M3 11 12 4l9 7v9h-6v-6H9v6H3z") },
|
|
23
|
+
{ value: "auctions", label: "Auctions", icon: icon("M14 4l6 6-3 3-6-6zM11 7l-8 8 3 3 8-8M4 21h9") },
|
|
24
|
+
{ value: "messages", label: "Messages", badge: 3, badgeLabel: "3 unread", icon: icon("M4 5h16v11H8l-4 4z") },
|
|
25
|
+
{ value: "me", label: "Me", icon: icon("M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM4 21a8 8 0 0 1 16 0") },
|
|
26
|
+
]}
|
|
27
|
+
/>
|
|
28
|
+
</View>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/tabs/native/sections.tsx
|
|
4
|
+
import { Tabs, Txt } from "@krizaka/ui/native";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
function NativeTabsSections() {
|
|
8
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 340 }, children: /* @__PURE__ */ jsx(
|
|
9
|
+
Tabs,
|
|
10
|
+
{
|
|
11
|
+
"aria-label": "Elena's page",
|
|
12
|
+
items: [
|
|
13
|
+
{ value: "videos", label: "Videos", count: 42, content: /* @__PURE__ */ jsx(Txt, { tone: "secondary", children: "42 videos, newest first." }) },
|
|
14
|
+
{ value: "auctions", label: "Auctions", count: 3, content: /* @__PURE__ */ jsx(Txt, { tone: "secondary", children: "3 auctions running." }) },
|
|
15
|
+
{ value: "challenges", label: "Challenges", content: /* @__PURE__ */ jsx(Txt, { tone: "secondary", children: "Dares from fans." }) },
|
|
16
|
+
{ value: "about", label: "About", content: /* @__PURE__ */ jsx(Txt, { tone: "secondary", children: "Covers and live sessions." }) }
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
) });
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
NativeTabsSections as default
|
|
23
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Tabs, Txt } from "@krizaka/ui/native";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
|
|
4
|
+
// A creator's page: sections that scroll sideways when they do not fit, a count after the words.
|
|
5
|
+
export default function NativeTabsSections() {
|
|
6
|
+
return (
|
|
7
|
+
<View style={{ width: 340 }}>
|
|
8
|
+
<Tabs
|
|
9
|
+
aria-label="Elena's page"
|
|
10
|
+
items={[
|
|
11
|
+
{ value: "videos", label: "Videos", count: 42, content: <Txt tone="secondary">42 videos, newest first.</Txt> },
|
|
12
|
+
{ value: "auctions", label: "Auctions", count: 3, content: <Txt tone="secondary">3 auctions running.</Txt> },
|
|
13
|
+
{ value: "challenges", label: "Challenges", content: <Txt tone="secondary">Dares from fans.</Txt> },
|
|
14
|
+
{ value: "about", label: "About", content: <Txt tone="secondary">Covers and live sessions.</Txt> },
|
|
15
|
+
]}
|
|
16
|
+
/>
|
|
17
|
+
</View>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/tabs/native/segmented.tsx
|
|
4
|
+
import { Tabs, Txt } from "@krizaka/ui/native";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
function NativeTabsSegmented() {
|
|
8
|
+
return /* @__PURE__ */ jsx(View, { style: { width: 320 }, children: /* @__PURE__ */ jsx(
|
|
9
|
+
Tabs,
|
|
10
|
+
{
|
|
11
|
+
variant: "segmented",
|
|
12
|
+
"aria-label": "Story insights",
|
|
13
|
+
items: [
|
|
14
|
+
{ value: "viewers", label: "Viewers", content: /* @__PURE__ */ jsx(Txt, { tone: "secondary", children: "312 people watched." }) },
|
|
15
|
+
{ value: "tips", label: "Tips", content: /* @__PURE__ */ jsx(Txt, { tone: "secondary", children: "$46 from 9 fans." }) }
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
) });
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
NativeTabsSegmented as default
|
|
22
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Tabs, Txt } from "@krizaka/ui/native";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
|
|
4
|
+
// Two views of the same content: `variant="segmented"`.
|
|
5
|
+
export default function NativeTabsSegmented() {
|
|
6
|
+
return (
|
|
7
|
+
<View style={{ width: 320 }}>
|
|
8
|
+
<Tabs
|
|
9
|
+
variant="segmented"
|
|
10
|
+
aria-label="Story insights"
|
|
11
|
+
items={[
|
|
12
|
+
{ value: "viewers", label: "Viewers", content: <Txt tone="secondary">312 people watched.</Txt> },
|
|
13
|
+
{ value: "tips", label: "Tips", content: <Txt tone="secondary">$46 from 9 fans.</Txt> },
|
|
14
|
+
]}
|
|
15
|
+
/>
|
|
16
|
+
</View>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/toast/native/snackbar.tsx
|
|
4
|
+
import { Button, toast, Toaster } from "@krizaka/ui/native";
|
|
5
|
+
import { useEffect } from "react";
|
|
6
|
+
import { View } from "react-native";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
var archive = () => toast("Conversation archived", { id: "archived", action: { label: "Undo", onPress: () => void 0 } });
|
|
9
|
+
function NativeToastSnackbar({ defaultOpen = false }) {
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (!defaultOpen) return;
|
|
12
|
+
toast.dismiss();
|
|
13
|
+
archive();
|
|
14
|
+
return () => toast.dismiss();
|
|
15
|
+
}, [defaultOpen]);
|
|
16
|
+
return /* @__PURE__ */ jsxs(View, { style: { width: 360, height: 200 }, children: [
|
|
17
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", label: "Archive", onPress: archive }),
|
|
18
|
+
/* @__PURE__ */ jsx(Toaster, { closeLabel: "Dismiss", position: "bottom", offset: 16, duration: defaultOpen ? Number.POSITIVE_INFINITY : 5e3 })
|
|
19
|
+
] });
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
NativeToastSnackbar as default
|
|
23
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Button, toast, Toaster } from "@krizaka/ui/native";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { View } from "react-native";
|
|
4
|
+
|
|
5
|
+
const archive = () => toast("Conversation archived", { id: "archived", action: { label: "Undo", onPress: () => undefined } });
|
|
6
|
+
|
|
7
|
+
// A snackbar: at the bottom, above the tab bar (`offset`), one action; swipe it away, a tick for its tone.
|
|
8
|
+
export default function NativeToastSnackbar({ defaultOpen = false }: { defaultOpen?: boolean }) {
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!defaultOpen) return;
|
|
11
|
+
toast.dismiss();
|
|
12
|
+
archive();
|
|
13
|
+
return () => toast.dismiss();
|
|
14
|
+
}, [defaultOpen]);
|
|
15
|
+
return (
|
|
16
|
+
<View style={{ width: 360, height: 200 }}>
|
|
17
|
+
<Button variant="outline" label="Archive" onPress={archive} />
|
|
18
|
+
<Toaster closeLabel="Dismiss" position="bottom" offset={16} duration={defaultOpen ? Number.POSITIVE_INFINITY : 5000} />
|
|
19
|
+
</View>
|
|
20
|
+
);
|
|
21
|
+
}
|