@wireservers-ui/react-natives 2.0.1 → 2.0.2-rc.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/CHANGELOG.md +87 -71
- package/LICENSE +21 -21
- package/README.md +642 -613
- package/bin/cli.js +83 -5
- package/bin/init.js +470 -324
- package/package.json +1 -1
- package/src/accordion/accordion-content.tsx +30 -30
- package/src/accordion/accordion-icon.tsx +54 -54
- package/src/accordion/accordion-item.tsx +37 -37
- package/src/accordion/accordion-title-text.tsx +24 -24
- package/src/accordion/accordion-trigger.tsx +38 -38
- package/src/accordion/accordion.tsx +91 -91
- package/src/accordion/index.ts +24 -24
- package/src/accordion/styles.ts +74 -74
- package/src/accordion/types.ts +56 -56
- package/src/actionsheet/actionsheet-backdrop.tsx +23 -23
- package/src/actionsheet/actionsheet-content.tsx +19 -19
- package/src/actionsheet/actionsheet-drag-indicator-wrapper.tsx +19 -19
- package/src/actionsheet/actionsheet-drag-indicator.tsx +19 -19
- package/src/actionsheet/actionsheet-item-text.tsx +19 -19
- package/src/actionsheet/actionsheet-item.tsx +20 -20
- package/src/actionsheet/actionsheet-scroll-view.tsx +12 -12
- package/src/actionsheet/actionsheet.tsx +45 -45
- package/src/actionsheet/index.ts +20 -20
- package/src/actionsheet/styles.ts +25 -25
- package/src/actionsheet/types.ts +49 -49
- package/src/alert/alert-body.tsx +19 -19
- package/src/alert/alert-close-button.tsx +23 -23
- package/src/alert/alert-icon.tsx +40 -40
- package/src/alert/alert-text.tsx +22 -22
- package/src/alert/alert.tsx +33 -33
- package/src/alert/index.ts +15 -15
- package/src/alert/styles.ts +112 -112
- package/src/alert/types.ts +36 -36
- package/src/alert-dialog/alert-dialog.tsx +54 -54
- package/src/alert-dialog/index.ts +2 -2
- package/src/alert-dialog/styles.ts +40 -40
- package/src/alert-dialog/types.ts +40 -40
- package/src/aspect-ratio/aspect-ratio.tsx +20 -20
- package/src/aspect-ratio/index.ts +2 -2
- package/src/aspect-ratio/styles.ts +6 -6
- package/src/aspect-ratio/types.ts +7 -7
- package/src/avatar/avatar-badge.tsx +22 -22
- package/src/avatar/avatar-fallback-text.tsx +33 -33
- package/src/avatar/avatar-group.tsx +53 -53
- package/src/avatar/avatar-image.tsx +21 -21
- package/src/avatar/avatar.tsx +27 -27
- package/src/avatar/index.ts +14 -14
- package/src/avatar/styles.ts +94 -94
- package/src/avatar/types.ts +35 -35
- package/src/badge/badge-icon.tsx +20 -20
- package/src/badge/badge-text.tsx +24 -24
- package/src/badge/badge.tsx +39 -39
- package/src/badge/index.ts +11 -11
- package/src/badge/styles.ts +175 -175
- package/src/badge/types.ts +37 -37
- package/src/blockquote/blockquote.tsx +21 -21
- package/src/blockquote/index.ts +2 -2
- package/src/blockquote/styles.ts +11 -11
- package/src/blockquote/types.ts +6 -6
- package/src/box/box.tsx +19 -19
- package/src/box/index.ts +2 -2
- package/src/box/styles.ts +6 -6
- package/src/box/types.ts +6 -6
- package/src/breadcrumb/breadcrumb-item.tsx +20 -20
- package/src/breadcrumb/breadcrumb-link.tsx +20 -20
- package/src/breadcrumb/breadcrumb-text.tsx +19 -19
- package/src/breadcrumb/breadcrumb.tsx +43 -43
- package/src/breadcrumb/index.ts +12 -12
- package/src/breadcrumb/styles.ts +36 -36
- package/src/breadcrumb/types.ts +33 -33
- package/src/button/button-group.tsx +35 -35
- package/src/button/button-icon.tsx +37 -37
- package/src/button/button-spinner.tsx +12 -12
- package/src/button/button-text.tsx +27 -27
- package/src/button/button.tsx +42 -42
- package/src/button/index.ts +19 -19
- package/src/button/styles.ts +250 -250
- package/src/button/types.ts +67 -67
- package/src/calendar/calendar-day-cell.tsx +67 -67
- package/src/calendar/calendar-day-view.tsx +66 -66
- package/src/calendar/calendar-event.tsx +59 -59
- package/src/calendar/calendar-header.tsx +60 -60
- package/src/calendar/calendar-horizontal-view.tsx +372 -372
- package/src/calendar/calendar-legend.tsx +41 -41
- package/src/calendar/calendar-month-view.tsx +47 -47
- package/src/calendar/calendar-vertical-view.tsx +395 -395
- package/src/calendar/calendar-view-switcher.tsx +65 -65
- package/src/calendar/calendar-week-view.tsx +52 -52
- package/src/calendar/calendar.tsx +74 -74
- package/src/calendar/index.ts +27 -27
- package/src/calendar/styles.ts +367 -367
- package/src/calendar/types.ts +101 -101
- package/src/calendar/use-calendar.ts +170 -170
- package/src/calendar/utils.ts +278 -278
- package/src/card/card-body.tsx +22 -22
- package/src/card/card-footer.tsx +19 -19
- package/src/card/card-header.tsx +22 -22
- package/src/card/card.tsx +27 -27
- package/src/card/index.ts +13 -13
- package/src/card/styles.ts +54 -54
- package/src/card/types.ts +31 -31
- package/src/carousel/carousel.tsx +436 -436
- package/src/carousel/index.ts +2 -2
- package/src/carousel/styles.ts +21 -21
- package/src/carousel/types.ts +41 -41
- package/src/center/center.tsx +19 -19
- package/src/center/index.ts +2 -2
- package/src/center/styles.ts +6 -6
- package/src/center/types.ts +6 -6
- package/src/checkbox/checkbox-group.tsx +63 -63
- package/src/checkbox/checkbox-icon.tsx +35 -35
- package/src/checkbox/checkbox-indicator.tsx +30 -30
- package/src/checkbox/checkbox-label.tsx +24 -24
- package/src/checkbox/checkbox.tsx +86 -86
- package/src/checkbox/index.ts +14 -14
- package/src/checkbox/styles.ts +69 -69
- package/src/checkbox/types.ts +55 -55
- package/src/circular-progress/circular-progress.tsx +82 -82
- package/src/circular-progress/index.ts +2 -2
- package/src/circular-progress/styles.ts +31 -31
- package/src/circular-progress/types.ts +18 -18
- package/src/code/code.tsx +36 -36
- package/src/code/index.ts +2 -2
- package/src/code/styles.ts +25 -25
- package/src/code/types.ts +13 -13
- package/src/collapsible/collapsible.tsx +58 -58
- package/src/collapsible/index.ts +2 -2
- package/src/collapsible/styles.ts +5 -5
- package/src/collapsible/types.ts +21 -21
- package/src/color-picker/color-picker-box.tsx +115 -115
- package/src/color-picker/color-picker-slider.tsx +98 -98
- package/src/color-picker/color-picker.tsx +162 -162
- package/src/color-picker/color-utils.ts +215 -215
- package/src/color-picker/index.ts +34 -34
- package/src/color-picker/styles.ts +32 -32
- package/src/color-picker/types.ts +49 -49
- package/src/color-picker/use-pointer-drag.ts +80 -80
- package/src/container/container.tsx +19 -19
- package/src/container/index.ts +2 -2
- package/src/container/styles.ts +21 -21
- package/src/container/types.ts +10 -10
- package/src/date-picker/date-picker.tsx +136 -136
- package/src/date-picker/index.ts +15 -15
- package/src/date-picker/styles.ts +18 -18
- package/src/date-picker/types.ts +33 -33
- package/src/divider/divider.tsx +21 -21
- package/src/divider/index.ts +2 -2
- package/src/divider/styles.ts +14 -14
- package/src/divider/types.ts +7 -7
- package/src/drawer/drawer-backdrop.tsx +23 -23
- package/src/drawer/drawer-body.tsx +19 -19
- package/src/drawer/drawer-close-button.tsx +29 -29
- package/src/drawer/drawer-content.tsx +142 -142
- package/src/drawer/drawer-footer.tsx +19 -19
- package/src/drawer/drawer-header.tsx +19 -19
- package/src/drawer/drawer.tsx +54 -54
- package/src/drawer/index.ts +22 -22
- package/src/drawer/styles.ts +36 -36
- package/src/drawer/types.ts +62 -62
- package/src/empty/empty.tsx +53 -53
- package/src/empty/index.ts +2 -2
- package/src/empty/styles.ts +26 -26
- package/src/empty/types.ts +22 -22
- package/src/fab/fab-icon.tsx +20 -20
- package/src/fab/fab-label.tsx +22 -22
- package/src/fab/fab.tsx +45 -45
- package/src/fab/index.ts +11 -11
- package/src/fab/styles.ts +57 -57
- package/src/fab/types.ts +33 -33
- package/src/form-control/form-control-error-icon.tsx +25 -25
- package/src/form-control/form-control-error-message.tsx +40 -40
- package/src/form-control/form-control-helper-text.tsx +25 -25
- package/src/form-control/form-control-label-text.tsx +25 -25
- package/src/form-control/form-control-label.tsx +36 -36
- package/src/form-control/form-control.tsx +46 -46
- package/src/form-control/index.ts +20 -20
- package/src/form-control/styles.ts +105 -105
- package/src/form-control/types.ts +45 -45
- package/src/heading/heading.tsx +21 -21
- package/src/heading/index.ts +2 -2
- package/src/heading/styles.ts +24 -24
- package/src/heading/types.ts +19 -19
- package/src/icon/icon.tsx +21 -21
- package/src/icon/index.ts +2 -2
- package/src/icon/styles.ts +18 -18
- package/src/icon/types.ts +8 -8
- package/src/icon-button/icon-button.tsx +23 -23
- package/src/icon-button/index.ts +2 -2
- package/src/icon-button/styles.ts +78 -78
- package/src/icon-button/types.ts +15 -15
- package/src/image/image.tsx +20 -20
- package/src/image/index.ts +2 -2
- package/src/image/styles.ts +28 -28
- package/src/image/types.ts +11 -11
- package/src/index.ts +1039 -1039
- package/src/input/index.ts +13 -13
- package/src/input/input-field.tsx +35 -35
- package/src/input/input-icon.tsx +25 -25
- package/src/input/input-slot.tsx +24 -24
- package/src/input/input.tsx +73 -73
- package/src/input/styles.ts +90 -90
- package/src/input/types.ts +39 -39
- package/src/kbd/index.ts +2 -2
- package/src/kbd/kbd.tsx +21 -21
- package/src/kbd/styles.ts +11 -11
- package/src/kbd/types.ts +7 -7
- package/src/link/index.ts +4 -4
- package/src/link/link-text.tsx +19 -19
- package/src/link/link.tsx +31 -31
- package/src/link/styles.ts +19 -19
- package/src/link/types.ts +13 -13
- package/src/list/index.ts +2 -2
- package/src/list/list.tsx +55 -55
- package/src/list/styles.ts +8 -8
- package/src/list/types.ts +17 -17
- package/src/menu/index.ts +2 -2
- package/src/menu/menu.tsx +99 -99
- package/src/menu/styles.ts +14 -14
- package/src/menu/types.ts +30 -30
- package/src/modal/index.ts +18 -18
- package/src/modal/modal-backdrop.tsx +23 -23
- package/src/modal/modal-body.tsx +19 -19
- package/src/modal/modal-close-button.tsx +29 -29
- package/src/modal/modal-content.tsx +22 -22
- package/src/modal/modal-footer.tsx +19 -19
- package/src/modal/modal-header.tsx +19 -19
- package/src/modal/modal.tsx +50 -50
- package/src/modal/styles.ts +37 -37
- package/src/modal/types.ts +49 -49
- package/src/nativewind-env.d.ts +1 -1
- package/src/number-input/index.ts +18 -18
- package/src/number-input/number-input.tsx +161 -161
- package/src/number-input/styles.ts +35 -35
- package/src/number-input/types.ts +44 -44
- package/src/overlay/index.ts +2 -2
- package/src/overlay/overlay.tsx +21 -21
- package/src/overlay/styles.ts +6 -6
- package/src/overlay/types.ts +7 -7
- package/src/pagination/index.ts +2 -2
- package/src/pagination/pagination.tsx +58 -58
- package/src/pagination/styles.ts +27 -27
- package/src/pagination/types.ts +19 -19
- package/src/password-input/index.ts +14 -14
- package/src/password-input/password-input.tsx +79 -79
- package/src/password-input/styles.ts +25 -25
- package/src/password-input/types.ts +24 -24
- package/src/pin-input/index.ts +12 -12
- package/src/pin-input/pin-input.tsx +96 -96
- package/src/pin-input/styles.ts +16 -16
- package/src/pin-input/types.ts +26 -26
- package/src/popover/index.ts +2 -2
- package/src/popover/popover.tsx +98 -98
- package/src/popover/styles.ts +31 -31
- package/src/popover/types.ts +46 -46
- package/src/portal/index.ts +2 -2
- package/src/portal/portal.tsx +8 -8
- package/src/portal/styles.ts +2 -2
- package/src/portal/types.ts +3 -3
- package/src/pressable/index.ts +2 -2
- package/src/pressable/pressable.tsx +20 -20
- package/src/pressable/styles.ts +10 -10
- package/src/pressable/types.ts +6 -6
- package/src/progress/index.ts +9 -9
- package/src/progress/progress-filled-track.tsx +26 -26
- package/src/progress/progress.tsx +52 -52
- package/src/progress/styles.ts +34 -34
- package/src/progress/types.ts +28 -28
- package/src/radio/index.ts +14 -14
- package/src/radio/radio-group.tsx +61 -61
- package/src/radio/radio-icon.tsx +24 -24
- package/src/radio/radio-indicator.tsx +30 -30
- package/src/radio/radio-label.tsx +24 -24
- package/src/radio/radio.tsx +68 -68
- package/src/radio/styles.ts +69 -69
- package/src/radio/types.ts +51 -51
- package/src/rating/index.ts +7 -7
- package/src/rating/rating.tsx +93 -93
- package/src/rating/styles.ts +13 -13
- package/src/rating/types.ts +29 -29
- package/src/search-input/index.ts +16 -16
- package/src/search-input/search-input.tsx +119 -119
- package/src/search-input/styles.ts +28 -28
- package/src/search-input/types.ts +31 -31
- package/src/segmented-control/index.ts +2 -2
- package/src/segmented-control/segmented-control.tsx +34 -34
- package/src/segmented-control/styles.ts +22 -22
- package/src/segmented-control/types.ts +22 -22
- package/src/select/index.ts +28 -28
- package/src/select/select-backdrop.tsx +25 -25
- package/src/select/select-content.tsx +49 -49
- package/src/select/select-drag-indicator.tsx +19 -19
- package/src/select/select-icon.tsx +25 -25
- package/src/select/select-input.tsx +32 -32
- package/src/select/select-item-text.tsx +30 -30
- package/src/select/select-item.tsx +72 -72
- package/src/select/select-portal.tsx +22 -22
- package/src/select/select-scroll-view.tsx +22 -22
- package/src/select/select-trigger.tsx +64 -64
- package/src/select/select.tsx +101 -101
- package/src/select/styles.ts +114 -114
- package/src/select/types.ts +92 -92
- package/src/skeleton/index.ts +2 -2
- package/src/skeleton/skeleton.tsx +29 -29
- package/src/skeleton/styles.ts +14 -14
- package/src/skeleton/types.ts +12 -12
- package/src/slider/index.ts +12 -12
- package/src/slider/slider-filled-track.tsx +31 -31
- package/src/slider/slider-thumb.tsx +52 -52
- package/src/slider/slider-track.tsx +154 -154
- package/src/slider/slider.tsx +193 -193
- package/src/slider/styles.ts +71 -71
- package/src/slider/types.ts +47 -47
- package/src/snackbar/index.ts +2 -2
- package/src/snackbar/snackbar.tsx +39 -39
- package/src/snackbar/styles.ts +29 -29
- package/src/snackbar/types.ts +21 -21
- package/src/spinner/index.ts +2 -2
- package/src/spinner/spinner.tsx +29 -29
- package/src/spinner/styles.ts +15 -15
- package/src/spinner/types.ts +10 -10
- package/src/stack/index.ts +2 -2
- package/src/stack/stack.tsx +49 -49
- package/src/stack/styles.ts +25 -25
- package/src/stack/types.ts +15 -15
- package/src/stat/index.ts +2 -2
- package/src/stat/stat.tsx +48 -48
- package/src/stat/styles.ts +34 -34
- package/src/stat/types.ts +24 -24
- package/src/stepper/index.ts +2 -2
- package/src/stepper/stepper.tsx +95 -95
- package/src/stepper/styles.ts +49 -49
- package/src/stepper/types.ts +20 -20
- package/src/switch/index.ts +2 -2
- package/src/switch/styles.ts +24 -24
- package/src/switch/switch.tsx +67 -67
- package/src/switch/types.ts +23 -23
- package/src/table/index.ts +2 -2
- package/src/table/styles.ts +12 -12
- package/src/table/table.tsx +52 -52
- package/src/table/types.ts +10 -10
- package/src/tabs/index.ts +18 -18
- package/src/tabs/styles.ts +113 -113
- package/src/tabs/tab-list.tsx +29 -29
- package/src/tabs/tab-panel.tsx +29 -29
- package/src/tabs/tab-panels.tsx +21 -21
- package/src/tabs/tab-text.tsx +26 -26
- package/src/tabs/tab.tsx +56 -56
- package/src/tabs/tabs.tsx +71 -71
- package/src/tabs/types.ts +53 -53
- package/src/tag/index.ts +14 -14
- package/src/tag/styles.ts +115 -115
- package/src/tag/tag-close-button.tsx +26 -26
- package/src/tag/tag-icon.tsx +20 -20
- package/src/tag/tag-text.tsx +22 -22
- package/src/tag/tag.tsx +40 -40
- package/src/tag/types.ts +33 -33
- package/src/tags-input/index.ts +18 -18
- package/src/tags-input/styles.ts +29 -29
- package/src/tags-input/tags-input.tsx +149 -149
- package/src/tags-input/types.ts +37 -37
- package/src/text/index.ts +2 -2
- package/src/text/styles.ts +54 -54
- package/src/text/text.tsx +51 -51
- package/src/text/types.ts +36 -36
- package/src/textarea/index.ts +2 -2
- package/src/textarea/styles.ts +37 -37
- package/src/textarea/textarea.tsx +68 -68
- package/src/textarea/types.ts +14 -14
- package/src/timeline/index.ts +2 -2
- package/src/timeline/styles.ts +57 -57
- package/src/timeline/timeline.tsx +52 -52
- package/src/timeline/types.ts +30 -30
- package/src/toast/index.ts +17 -17
- package/src/toast/styles.ts +118 -118
- package/src/toast/toast-description.tsx +22 -22
- package/src/toast/toast-provider.tsx +136 -136
- package/src/toast/toast-title.tsx +22 -22
- package/src/toast/toast.tsx +43 -43
- package/src/toast/types.ts +50 -50
- package/src/toast/use-toast.ts +7 -7
- package/src/toggle/index.ts +2 -2
- package/src/toggle/styles.ts +30 -30
- package/src/toggle/toggle.tsx +25 -25
- package/src/toggle/types.ts +15 -15
- package/src/toggle-group/index.ts +2 -2
- package/src/toggle-group/styles.ts +35 -35
- package/src/toggle-group/toggle-group.tsx +60 -60
- package/src/toggle-group/types.ts +29 -29
- package/src/tooltip/index.ts +11 -11
- package/src/tooltip/styles.ts +9 -9
- package/src/tooltip/tooltip-content.tsx +19 -19
- package/src/tooltip/tooltip-text.tsx +19 -19
- package/src/tooltip/tooltip.tsx +116 -116
- package/src/tooltip/types.ts +35 -35
- package/src/utils/brand.ts +5 -5
- package/src/utils/create-context.ts +17 -17
- package/src/utils/index.ts +8 -8
- package/src/utils/types.ts +20 -20
- package/src/visually-hidden/index.ts +2 -2
- package/src/visually-hidden/styles.ts +6 -6
- package/src/visually-hidden/types.ts +6 -6
- package/src/visually-hidden/visually-hidden.tsx +22 -22
- package/tailwind-preset.js +212 -203
|
@@ -1,215 +1,215 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure color conversion utilities for the ColorPicker.
|
|
3
|
-
* All functions are dependency-free and work on all platforms.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/** Convert a hex string (#RRGGBB or #RGB) to { r, g, b } (0-255 each). */
|
|
7
|
-
export function hexToRgb(hex: string): { r: number; g: number; b: number } {
|
|
8
|
-
let h = hex.replace('#', '');
|
|
9
|
-
if (h.length === 3) {
|
|
10
|
-
h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
|
|
11
|
-
}
|
|
12
|
-
const num = parseInt(h, 16);
|
|
13
|
-
return {
|
|
14
|
-
r: (num >> 16) & 255,
|
|
15
|
-
g: (num >> 8) & 255,
|
|
16
|
-
b: num & 255,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/** Convert { r, g, b } (0-255) to a 6-digit hex string with # prefix. */
|
|
21
|
-
export function rgbToHex(r: number, g: number, b: number): string {
|
|
22
|
-
const toHex = (n: number) =>
|
|
23
|
-
Math.round(Math.min(255, Math.max(0, n)))
|
|
24
|
-
.toString(16)
|
|
25
|
-
.padStart(2, '0');
|
|
26
|
-
return `#${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** Convert { r, g, b } (0-255) to { h, s, l } where h is 0-360, s and l are 0-100. */
|
|
30
|
-
export function rgbToHsl(
|
|
31
|
-
r: number,
|
|
32
|
-
g: number,
|
|
33
|
-
b: number,
|
|
34
|
-
): { h: number; s: number; l: number } {
|
|
35
|
-
const rn = r / 255;
|
|
36
|
-
const gn = g / 255;
|
|
37
|
-
const bn = b / 255;
|
|
38
|
-
const max = Math.max(rn, gn, bn);
|
|
39
|
-
const min = Math.min(rn, gn, bn);
|
|
40
|
-
const l = (max + min) / 2;
|
|
41
|
-
|
|
42
|
-
if (max === min) {
|
|
43
|
-
return { h: 0, s: 0, l: Math.round(l * 100) };
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const d = max - min;
|
|
47
|
-
const s = d / (1 - Math.abs(2 * l - 1));
|
|
48
|
-
let h: number;
|
|
49
|
-
|
|
50
|
-
if (max === rn) {
|
|
51
|
-
h = ((gn - bn) / d + (gn < bn ? 6 : 0)) * 60;
|
|
52
|
-
} else if (max === gn) {
|
|
53
|
-
h = ((bn - rn) / d + 2) * 60;
|
|
54
|
-
} else {
|
|
55
|
-
h = ((rn - gn) / d + 4) * 60;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return {
|
|
59
|
-
h: Math.round(h) % 360,
|
|
60
|
-
s: Math.round(s * 100),
|
|
61
|
-
l: Math.round(l * 100),
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/** Convert { h, s, l } (h: 0-360, s: 0-100, l: 0-100) to { r, g, b } (0-255). */
|
|
66
|
-
export function hslToRgb(
|
|
67
|
-
h: number,
|
|
68
|
-
s: number,
|
|
69
|
-
l: number,
|
|
70
|
-
): { r: number; g: number; b: number } {
|
|
71
|
-
const sn = s / 100;
|
|
72
|
-
const ln = l / 100;
|
|
73
|
-
|
|
74
|
-
if (sn === 0) {
|
|
75
|
-
const v = Math.round(ln * 255);
|
|
76
|
-
return { r: v, g: v, b: v };
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const hue2rgb = (p: number, q: number, t: number): number => {
|
|
80
|
-
let tt = t;
|
|
81
|
-
if (tt < 0) tt += 1;
|
|
82
|
-
if (tt > 1) tt -= 1;
|
|
83
|
-
if (tt < 1 / 6) return p + (q - p) * 6 * tt;
|
|
84
|
-
if (tt < 1 / 2) return q;
|
|
85
|
-
if (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;
|
|
86
|
-
return p;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;
|
|
90
|
-
const p = 2 * ln - q;
|
|
91
|
-
const hn = h / 360;
|
|
92
|
-
|
|
93
|
-
return {
|
|
94
|
-
r: Math.round(hue2rgb(p, q, hn + 1 / 3) * 255),
|
|
95
|
-
g: Math.round(hue2rgb(p, q, hn) * 255),
|
|
96
|
-
b: Math.round(hue2rgb(p, q, hn - 1 / 3) * 255),
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/** Convert { r, g, b } (0-255) to { h, s, v } where h is 0-360, s and v are 0-100. */
|
|
101
|
-
export function rgbToHsv(
|
|
102
|
-
r: number,
|
|
103
|
-
g: number,
|
|
104
|
-
b: number,
|
|
105
|
-
): { h: number; s: number; v: number } {
|
|
106
|
-
const rn = r / 255;
|
|
107
|
-
const gn = g / 255;
|
|
108
|
-
const bn = b / 255;
|
|
109
|
-
const max = Math.max(rn, gn, bn);
|
|
110
|
-
const min = Math.min(rn, gn, bn);
|
|
111
|
-
const d = max - min;
|
|
112
|
-
const v = max;
|
|
113
|
-
|
|
114
|
-
if (max === 0) {
|
|
115
|
-
return { h: 0, s: 0, v: 0 };
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const s = d / max;
|
|
119
|
-
let h: number;
|
|
120
|
-
|
|
121
|
-
if (d === 0) {
|
|
122
|
-
h = 0;
|
|
123
|
-
} else if (max === rn) {
|
|
124
|
-
h = ((gn - bn) / d + (gn < bn ? 6 : 0)) * 60;
|
|
125
|
-
} else if (max === gn) {
|
|
126
|
-
h = ((bn - rn) / d + 2) * 60;
|
|
127
|
-
} else {
|
|
128
|
-
h = ((rn - gn) / d + 4) * 60;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
h: Math.round(h) % 360,
|
|
133
|
-
s: Math.round(s * 100),
|
|
134
|
-
v: Math.round(v * 100),
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/** Convert { h, s, v } (h: 0-360, s: 0-100, v: 0-100) to { r, g, b } (0-255). */
|
|
139
|
-
export function hsvToRgb(
|
|
140
|
-
h: number,
|
|
141
|
-
s: number,
|
|
142
|
-
v: number,
|
|
143
|
-
): { r: number; g: number; b: number } {
|
|
144
|
-
const sn = s / 100;
|
|
145
|
-
const vn = v / 100;
|
|
146
|
-
const c = vn * sn;
|
|
147
|
-
const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
|
|
148
|
-
const m = vn - c;
|
|
149
|
-
|
|
150
|
-
let r1: number, g1: number, b1: number;
|
|
151
|
-
|
|
152
|
-
if (h < 60) {
|
|
153
|
-
[r1, g1, b1] = [c, x, 0];
|
|
154
|
-
} else if (h < 120) {
|
|
155
|
-
[r1, g1, b1] = [x, c, 0];
|
|
156
|
-
} else if (h < 180) {
|
|
157
|
-
[r1, g1, b1] = [0, c, x];
|
|
158
|
-
} else if (h < 240) {
|
|
159
|
-
[r1, g1, b1] = [0, x, c];
|
|
160
|
-
} else if (h < 300) {
|
|
161
|
-
[r1, g1, b1] = [x, 0, c];
|
|
162
|
-
} else {
|
|
163
|
-
[r1, g1, b1] = [c, 0, x];
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
return {
|
|
167
|
-
r: Math.round((r1 + m) * 255),
|
|
168
|
-
g: Math.round((g1 + m) * 255),
|
|
169
|
-
b: Math.round((b1 + m) * 255),
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/** Extract HSV from a hex color string. */
|
|
174
|
-
export function hexToHsv(hex: string): { h: number; s: number; v: number } {
|
|
175
|
-
const { r, g, b } = hexToRgb(hex);
|
|
176
|
-
return rgbToHsv(r, g, b);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/** Convert HSV to a hex color string. */
|
|
180
|
-
export function hsvToHex(h: number, s: number, v: number): string {
|
|
181
|
-
const { r, g, b } = hsvToRgb(h, s, v);
|
|
182
|
-
return rgbToHex(r, g, b);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/** Extract hue (0-360) from a hex color string. */
|
|
186
|
-
export function hexToHue(hex: string): number {
|
|
187
|
-
const { r, g, b } = hexToRgb(hex);
|
|
188
|
-
return rgbToHsl(r, g, b).h;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/** Given a hue (0-360) and an existing hex color, return a new hex with the new hue
|
|
192
|
-
* but preserving the original saturation and lightness. If the color is achromatic
|
|
193
|
-
* (gray), defaults to full saturation at 50% lightness. */
|
|
194
|
-
export function replaceHue(hex: string, newHue: number): string {
|
|
195
|
-
const { r, g, b } = hexToRgb(hex);
|
|
196
|
-
let { s, l } = rgbToHsl(r, g, b);
|
|
197
|
-
// If achromatic, use vivid defaults so the wheel produces a visible color
|
|
198
|
-
if (s === 0) {
|
|
199
|
-
s = 100;
|
|
200
|
-
l = 50;
|
|
201
|
-
}
|
|
202
|
-
const rgb = hslToRgb(newHue, s, l);
|
|
203
|
-
return rgbToHex(rgb.r, rgb.g, rgb.b);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/** Convert a hue (0-360) to a fully-saturated hex color (hsl(hue, 100%, 50%)). */
|
|
207
|
-
export function hueToHex(hue: number): string {
|
|
208
|
-
const { r, g, b } = hslToRgb(hue, 100, 50);
|
|
209
|
-
return rgbToHex(r, g, b);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/** Clamp a value between min and max. */
|
|
213
|
-
export function clamp(value: number, min: number, max: number): number {
|
|
214
|
-
return Math.min(max, Math.max(min, value));
|
|
215
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Pure color conversion utilities for the ColorPicker.
|
|
3
|
+
* All functions are dependency-free and work on all platforms.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/** Convert a hex string (#RRGGBB or #RGB) to { r, g, b } (0-255 each). */
|
|
7
|
+
export function hexToRgb(hex: string): { r: number; g: number; b: number } {
|
|
8
|
+
let h = hex.replace('#', '');
|
|
9
|
+
if (h.length === 3) {
|
|
10
|
+
h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
|
|
11
|
+
}
|
|
12
|
+
const num = parseInt(h, 16);
|
|
13
|
+
return {
|
|
14
|
+
r: (num >> 16) & 255,
|
|
15
|
+
g: (num >> 8) & 255,
|
|
16
|
+
b: num & 255,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Convert { r, g, b } (0-255) to a 6-digit hex string with # prefix. */
|
|
21
|
+
export function rgbToHex(r: number, g: number, b: number): string {
|
|
22
|
+
const toHex = (n: number) =>
|
|
23
|
+
Math.round(Math.min(255, Math.max(0, n)))
|
|
24
|
+
.toString(16)
|
|
25
|
+
.padStart(2, '0');
|
|
26
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Convert { r, g, b } (0-255) to { h, s, l } where h is 0-360, s and l are 0-100. */
|
|
30
|
+
export function rgbToHsl(
|
|
31
|
+
r: number,
|
|
32
|
+
g: number,
|
|
33
|
+
b: number,
|
|
34
|
+
): { h: number; s: number; l: number } {
|
|
35
|
+
const rn = r / 255;
|
|
36
|
+
const gn = g / 255;
|
|
37
|
+
const bn = b / 255;
|
|
38
|
+
const max = Math.max(rn, gn, bn);
|
|
39
|
+
const min = Math.min(rn, gn, bn);
|
|
40
|
+
const l = (max + min) / 2;
|
|
41
|
+
|
|
42
|
+
if (max === min) {
|
|
43
|
+
return { h: 0, s: 0, l: Math.round(l * 100) };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const d = max - min;
|
|
47
|
+
const s = d / (1 - Math.abs(2 * l - 1));
|
|
48
|
+
let h: number;
|
|
49
|
+
|
|
50
|
+
if (max === rn) {
|
|
51
|
+
h = ((gn - bn) / d + (gn < bn ? 6 : 0)) * 60;
|
|
52
|
+
} else if (max === gn) {
|
|
53
|
+
h = ((bn - rn) / d + 2) * 60;
|
|
54
|
+
} else {
|
|
55
|
+
h = ((rn - gn) / d + 4) * 60;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
h: Math.round(h) % 360,
|
|
60
|
+
s: Math.round(s * 100),
|
|
61
|
+
l: Math.round(l * 100),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Convert { h, s, l } (h: 0-360, s: 0-100, l: 0-100) to { r, g, b } (0-255). */
|
|
66
|
+
export function hslToRgb(
|
|
67
|
+
h: number,
|
|
68
|
+
s: number,
|
|
69
|
+
l: number,
|
|
70
|
+
): { r: number; g: number; b: number } {
|
|
71
|
+
const sn = s / 100;
|
|
72
|
+
const ln = l / 100;
|
|
73
|
+
|
|
74
|
+
if (sn === 0) {
|
|
75
|
+
const v = Math.round(ln * 255);
|
|
76
|
+
return { r: v, g: v, b: v };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const hue2rgb = (p: number, q: number, t: number): number => {
|
|
80
|
+
let tt = t;
|
|
81
|
+
if (tt < 0) tt += 1;
|
|
82
|
+
if (tt > 1) tt -= 1;
|
|
83
|
+
if (tt < 1 / 6) return p + (q - p) * 6 * tt;
|
|
84
|
+
if (tt < 1 / 2) return q;
|
|
85
|
+
if (tt < 2 / 3) return p + (q - p) * (2 / 3 - tt) * 6;
|
|
86
|
+
return p;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;
|
|
90
|
+
const p = 2 * ln - q;
|
|
91
|
+
const hn = h / 360;
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
r: Math.round(hue2rgb(p, q, hn + 1 / 3) * 255),
|
|
95
|
+
g: Math.round(hue2rgb(p, q, hn) * 255),
|
|
96
|
+
b: Math.round(hue2rgb(p, q, hn - 1 / 3) * 255),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Convert { r, g, b } (0-255) to { h, s, v } where h is 0-360, s and v are 0-100. */
|
|
101
|
+
export function rgbToHsv(
|
|
102
|
+
r: number,
|
|
103
|
+
g: number,
|
|
104
|
+
b: number,
|
|
105
|
+
): { h: number; s: number; v: number } {
|
|
106
|
+
const rn = r / 255;
|
|
107
|
+
const gn = g / 255;
|
|
108
|
+
const bn = b / 255;
|
|
109
|
+
const max = Math.max(rn, gn, bn);
|
|
110
|
+
const min = Math.min(rn, gn, bn);
|
|
111
|
+
const d = max - min;
|
|
112
|
+
const v = max;
|
|
113
|
+
|
|
114
|
+
if (max === 0) {
|
|
115
|
+
return { h: 0, s: 0, v: 0 };
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const s = d / max;
|
|
119
|
+
let h: number;
|
|
120
|
+
|
|
121
|
+
if (d === 0) {
|
|
122
|
+
h = 0;
|
|
123
|
+
} else if (max === rn) {
|
|
124
|
+
h = ((gn - bn) / d + (gn < bn ? 6 : 0)) * 60;
|
|
125
|
+
} else if (max === gn) {
|
|
126
|
+
h = ((bn - rn) / d + 2) * 60;
|
|
127
|
+
} else {
|
|
128
|
+
h = ((rn - gn) / d + 4) * 60;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
h: Math.round(h) % 360,
|
|
133
|
+
s: Math.round(s * 100),
|
|
134
|
+
v: Math.round(v * 100),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** Convert { h, s, v } (h: 0-360, s: 0-100, v: 0-100) to { r, g, b } (0-255). */
|
|
139
|
+
export function hsvToRgb(
|
|
140
|
+
h: number,
|
|
141
|
+
s: number,
|
|
142
|
+
v: number,
|
|
143
|
+
): { r: number; g: number; b: number } {
|
|
144
|
+
const sn = s / 100;
|
|
145
|
+
const vn = v / 100;
|
|
146
|
+
const c = vn * sn;
|
|
147
|
+
const x = c * (1 - Math.abs(((h / 60) % 2) - 1));
|
|
148
|
+
const m = vn - c;
|
|
149
|
+
|
|
150
|
+
let r1: number, g1: number, b1: number;
|
|
151
|
+
|
|
152
|
+
if (h < 60) {
|
|
153
|
+
[r1, g1, b1] = [c, x, 0];
|
|
154
|
+
} else if (h < 120) {
|
|
155
|
+
[r1, g1, b1] = [x, c, 0];
|
|
156
|
+
} else if (h < 180) {
|
|
157
|
+
[r1, g1, b1] = [0, c, x];
|
|
158
|
+
} else if (h < 240) {
|
|
159
|
+
[r1, g1, b1] = [0, x, c];
|
|
160
|
+
} else if (h < 300) {
|
|
161
|
+
[r1, g1, b1] = [x, 0, c];
|
|
162
|
+
} else {
|
|
163
|
+
[r1, g1, b1] = [c, 0, x];
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
r: Math.round((r1 + m) * 255),
|
|
168
|
+
g: Math.round((g1 + m) * 255),
|
|
169
|
+
b: Math.round((b1 + m) * 255),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/** Extract HSV from a hex color string. */
|
|
174
|
+
export function hexToHsv(hex: string): { h: number; s: number; v: number } {
|
|
175
|
+
const { r, g, b } = hexToRgb(hex);
|
|
176
|
+
return rgbToHsv(r, g, b);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** Convert HSV to a hex color string. */
|
|
180
|
+
export function hsvToHex(h: number, s: number, v: number): string {
|
|
181
|
+
const { r, g, b } = hsvToRgb(h, s, v);
|
|
182
|
+
return rgbToHex(r, g, b);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** Extract hue (0-360) from a hex color string. */
|
|
186
|
+
export function hexToHue(hex: string): number {
|
|
187
|
+
const { r, g, b } = hexToRgb(hex);
|
|
188
|
+
return rgbToHsl(r, g, b).h;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** Given a hue (0-360) and an existing hex color, return a new hex with the new hue
|
|
192
|
+
* but preserving the original saturation and lightness. If the color is achromatic
|
|
193
|
+
* (gray), defaults to full saturation at 50% lightness. */
|
|
194
|
+
export function replaceHue(hex: string, newHue: number): string {
|
|
195
|
+
const { r, g, b } = hexToRgb(hex);
|
|
196
|
+
let { s, l } = rgbToHsl(r, g, b);
|
|
197
|
+
// If achromatic, use vivid defaults so the wheel produces a visible color
|
|
198
|
+
if (s === 0) {
|
|
199
|
+
s = 100;
|
|
200
|
+
l = 50;
|
|
201
|
+
}
|
|
202
|
+
const rgb = hslToRgb(newHue, s, l);
|
|
203
|
+
return rgbToHex(rgb.r, rgb.g, rgb.b);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** Convert a hue (0-360) to a fully-saturated hex color (hsl(hue, 100%, 50%)). */
|
|
207
|
+
export function hueToHex(hue: number): string {
|
|
208
|
+
const { r, g, b } = hslToRgb(hue, 100, 50);
|
|
209
|
+
return rgbToHex(r, g, b);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** Clamp a value between min and max. */
|
|
213
|
+
export function clamp(value: number, min: number, max: number): number {
|
|
214
|
+
return Math.min(max, Math.max(min, value));
|
|
215
|
+
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
export {
|
|
2
|
-
ColorPicker,
|
|
3
|
-
ColorPickerProvider,
|
|
4
|
-
useColorPickerContext,
|
|
5
|
-
ColorPickerTrigger,
|
|
6
|
-
ColorPickerContent,
|
|
7
|
-
ColorPickerSwatch,
|
|
8
|
-
ColorPickerInput,
|
|
9
|
-
} from './color-picker';
|
|
10
|
-
export { ColorPickerBox } from './color-picker-box';
|
|
11
|
-
export { ColorPickerSlider } from './color-picker-slider';
|
|
12
|
-
export type {
|
|
13
|
-
ColorPickerProps,
|
|
14
|
-
ColorPickerTriggerProps,
|
|
15
|
-
ColorPickerContentProps,
|
|
16
|
-
ColorPickerSwatchProps,
|
|
17
|
-
ColorPickerInputProps,
|
|
18
|
-
ColorPickerBoxProps,
|
|
19
|
-
ColorPickerSliderProps,
|
|
20
|
-
ColorPickerContextValue,
|
|
21
|
-
} from './types';
|
|
22
|
-
export {
|
|
23
|
-
hexToRgb,
|
|
24
|
-
rgbToHex,
|
|
25
|
-
rgbToHsl,
|
|
26
|
-
hslToRgb,
|
|
27
|
-
rgbToHsv,
|
|
28
|
-
hsvToRgb,
|
|
29
|
-
hexToHsv,
|
|
30
|
-
hsvToHex,
|
|
31
|
-
hexToHue,
|
|
32
|
-
replaceHue,
|
|
33
|
-
hueToHex,
|
|
34
|
-
} from './color-utils';
|
|
1
|
+
export {
|
|
2
|
+
ColorPicker,
|
|
3
|
+
ColorPickerProvider,
|
|
4
|
+
useColorPickerContext,
|
|
5
|
+
ColorPickerTrigger,
|
|
6
|
+
ColorPickerContent,
|
|
7
|
+
ColorPickerSwatch,
|
|
8
|
+
ColorPickerInput,
|
|
9
|
+
} from './color-picker';
|
|
10
|
+
export { ColorPickerBox } from './color-picker-box';
|
|
11
|
+
export { ColorPickerSlider } from './color-picker-slider';
|
|
12
|
+
export type {
|
|
13
|
+
ColorPickerProps,
|
|
14
|
+
ColorPickerTriggerProps,
|
|
15
|
+
ColorPickerContentProps,
|
|
16
|
+
ColorPickerSwatchProps,
|
|
17
|
+
ColorPickerInputProps,
|
|
18
|
+
ColorPickerBoxProps,
|
|
19
|
+
ColorPickerSliderProps,
|
|
20
|
+
ColorPickerContextValue,
|
|
21
|
+
} from './types';
|
|
22
|
+
export {
|
|
23
|
+
hexToRgb,
|
|
24
|
+
rgbToHex,
|
|
25
|
+
rgbToHsl,
|
|
26
|
+
hslToRgb,
|
|
27
|
+
rgbToHsv,
|
|
28
|
+
hsvToRgb,
|
|
29
|
+
hexToHsv,
|
|
30
|
+
hsvToHex,
|
|
31
|
+
hexToHue,
|
|
32
|
+
replaceHue,
|
|
33
|
+
hueToHex,
|
|
34
|
+
} from './color-utils';
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
import { tv } from 'tailwind-variants';
|
|
2
|
-
|
|
3
|
-
export const colorPickerTriggerStyle = tv({
|
|
4
|
-
base: 'flex-row items-center gap-2 border border-outline-300 rounded-lg bg-background-0 h-10 px-3',
|
|
5
|
-
variants: {},
|
|
6
|
-
});
|
|
7
|
-
export const colorPickerSwatchPreviewStyle = tv({
|
|
8
|
-
base: 'h-5 w-5 rounded-full border border-outline-200',
|
|
9
|
-
variants: {},
|
|
10
|
-
});
|
|
11
|
-
export const colorPickerContentStyle = tv({
|
|
12
|
-
base: 'bg-background-0 rounded-xl p-4 shadow-hard-2 border border-outline-100 gap-3',
|
|
13
|
-
variants: {},
|
|
14
|
-
});
|
|
15
|
-
export const colorPickerSwatchStyle = tv({
|
|
16
|
-
base: 'h-8 w-8 rounded-full border-2 border-transparent',
|
|
17
|
-
variants: {
|
|
18
|
-
isSelected: { true: 'border-primary-500' },
|
|
19
|
-
},
|
|
20
|
-
});
|
|
21
|
-
export const colorPickerInputStyle = tv({
|
|
22
|
-
base: 'border border-outline-300 rounded-lg bg-background-0 h-10 px-3 text-sm text-typography-900 font-mono',
|
|
23
|
-
variants: {},
|
|
24
|
-
});
|
|
25
|
-
export const colorPickerBoxStyle = tv({
|
|
26
|
-
base: '',
|
|
27
|
-
variants: {},
|
|
28
|
-
});
|
|
29
|
-
export const colorPickerSliderStyle = tv({
|
|
30
|
-
base: '',
|
|
31
|
-
variants: {},
|
|
32
|
-
});
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
|
|
3
|
+
export const colorPickerTriggerStyle = tv({
|
|
4
|
+
base: 'flex-row items-center gap-2 border border-outline-300 rounded-lg bg-background-0 h-10 px-3',
|
|
5
|
+
variants: {},
|
|
6
|
+
});
|
|
7
|
+
export const colorPickerSwatchPreviewStyle = tv({
|
|
8
|
+
base: 'h-5 w-5 rounded-full border border-outline-200',
|
|
9
|
+
variants: {},
|
|
10
|
+
});
|
|
11
|
+
export const colorPickerContentStyle = tv({
|
|
12
|
+
base: 'bg-background-0 rounded-xl p-4 shadow-hard-2 border border-outline-100 gap-3',
|
|
13
|
+
variants: {},
|
|
14
|
+
});
|
|
15
|
+
export const colorPickerSwatchStyle = tv({
|
|
16
|
+
base: 'h-8 w-8 rounded-full border-2 border-transparent',
|
|
17
|
+
variants: {
|
|
18
|
+
isSelected: { true: 'border-primary-500' },
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
export const colorPickerInputStyle = tv({
|
|
22
|
+
base: 'border border-outline-300 rounded-lg bg-background-0 h-10 px-3 text-sm text-typography-900 font-mono',
|
|
23
|
+
variants: {},
|
|
24
|
+
});
|
|
25
|
+
export const colorPickerBoxStyle = tv({
|
|
26
|
+
base: '',
|
|
27
|
+
variants: {},
|
|
28
|
+
});
|
|
29
|
+
export const colorPickerSliderStyle = tv({
|
|
30
|
+
base: '',
|
|
31
|
+
variants: {},
|
|
32
|
+
});
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import type { View, Pressable, TextInput } from 'react-native';
|
|
2
|
-
|
|
3
|
-
export interface ColorPickerContextValue {
|
|
4
|
-
isOpen: boolean;
|
|
5
|
-
onToggle: () => void;
|
|
6
|
-
onClose: () => void;
|
|
7
|
-
color: string;
|
|
8
|
-
onColorChange: (color: string) => void;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface ColorPickerProps {
|
|
12
|
-
isOpen?: boolean;
|
|
13
|
-
onOpenChange?: (open: boolean) => void;
|
|
14
|
-
value?: string;
|
|
15
|
-
onChange?: (color: string) => void;
|
|
16
|
-
defaultValue?: string;
|
|
17
|
-
children: React.ReactNode;
|
|
18
|
-
}
|
|
19
|
-
export interface ColorPickerTriggerProps
|
|
20
|
-
extends React.ComponentPropsWithoutRef<typeof Pressable> {
|
|
21
|
-
className?: string;
|
|
22
|
-
}
|
|
23
|
-
export interface ColorPickerContentProps
|
|
24
|
-
extends React.ComponentPropsWithoutRef<typeof View> {
|
|
25
|
-
className?: string;
|
|
26
|
-
}
|
|
27
|
-
export interface ColorPickerSwatchProps
|
|
28
|
-
extends React.ComponentPropsWithoutRef<typeof Pressable> {
|
|
29
|
-
className?: string;
|
|
30
|
-
color: string;
|
|
31
|
-
}
|
|
32
|
-
export interface ColorPickerInputProps
|
|
33
|
-
extends React.ComponentPropsWithoutRef<typeof TextInput> {
|
|
34
|
-
className?: string;
|
|
35
|
-
}
|
|
36
|
-
export interface ColorPickerBoxProps
|
|
37
|
-
extends React.ComponentPropsWithoutRef<typeof View> {
|
|
38
|
-
className?: string;
|
|
39
|
-
/** Size of the saturation-value square in pixels. Default: 200. */
|
|
40
|
-
size?: number;
|
|
41
|
-
}
|
|
42
|
-
export interface ColorPickerSliderProps
|
|
43
|
-
extends React.ComponentPropsWithoutRef<typeof View> {
|
|
44
|
-
className?: string;
|
|
45
|
-
/** Height of the hue slider in pixels. Default: 200. */
|
|
46
|
-
height?: number;
|
|
47
|
-
/** Width of the hue slider in pixels. Default: 24. */
|
|
48
|
-
width?: number;
|
|
49
|
-
}
|
|
1
|
+
import type { View, Pressable, TextInput } from 'react-native';
|
|
2
|
+
|
|
3
|
+
export interface ColorPickerContextValue {
|
|
4
|
+
isOpen: boolean;
|
|
5
|
+
onToggle: () => void;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
color: string;
|
|
8
|
+
onColorChange: (color: string) => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ColorPickerProps {
|
|
12
|
+
isOpen?: boolean;
|
|
13
|
+
onOpenChange?: (open: boolean) => void;
|
|
14
|
+
value?: string;
|
|
15
|
+
onChange?: (color: string) => void;
|
|
16
|
+
defaultValue?: string;
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
export interface ColorPickerTriggerProps
|
|
20
|
+
extends React.ComponentPropsWithoutRef<typeof Pressable> {
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ColorPickerContentProps
|
|
24
|
+
extends React.ComponentPropsWithoutRef<typeof View> {
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ColorPickerSwatchProps
|
|
28
|
+
extends React.ComponentPropsWithoutRef<typeof Pressable> {
|
|
29
|
+
className?: string;
|
|
30
|
+
color: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ColorPickerInputProps
|
|
33
|
+
extends React.ComponentPropsWithoutRef<typeof TextInput> {
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface ColorPickerBoxProps
|
|
37
|
+
extends React.ComponentPropsWithoutRef<typeof View> {
|
|
38
|
+
className?: string;
|
|
39
|
+
/** Size of the saturation-value square in pixels. Default: 200. */
|
|
40
|
+
size?: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ColorPickerSliderProps
|
|
43
|
+
extends React.ComponentPropsWithoutRef<typeof View> {
|
|
44
|
+
className?: string;
|
|
45
|
+
/** Height of the hue slider in pixels. Default: 200. */
|
|
46
|
+
height?: number;
|
|
47
|
+
/** Width of the hue slider in pixels. Default: 24. */
|
|
48
|
+
width?: number;
|
|
49
|
+
}
|