@giddaa-housing/ui 0.1.0 → 1.0.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/README.md +18 -6
- package/css/base.css +37 -0
- package/css/components.css +135 -0
- package/css/generated/shared.css +1 -0
- package/css/giddaa.css +402 -0
- package/css/preset.css +77 -0
- package/css/styles.css +2 -0
- package/css/theme.css +255 -0
- package/dist/accordion.js +5 -35
- package/dist/accordion.js.map +1 -1
- package/dist/activity-timeline.d.ts +33 -0
- package/dist/activity-timeline.js +212 -0
- package/dist/activity-timeline.js.map +1 -0
- package/dist/alert.js +5 -35
- package/dist/alert.js.map +1 -1
- package/dist/auth-layout.d.ts +23 -0
- package/dist/auth-layout.js +304 -0
- package/dist/auth-layout.js.map +1 -0
- package/dist/avatar.js +10 -142
- package/dist/avatar.js.map +1 -1
- package/dist/badge.d.ts +3 -2
- package/dist/badge.js +6 -114
- package/dist/badge.js.map +1 -1
- package/dist/bar-chart.d.ts +101 -77
- package/dist/bar-chart.js +142 -220
- package/dist/bar-chart.js.map +1 -1
- package/dist/breadcrumb.js +5 -35
- package/dist/breadcrumb.js.map +1 -1
- package/dist/bullet-chart.js +15 -48
- package/dist/bullet-chart.js.map +1 -1
- package/dist/button-group.js +14 -90
- package/dist/button-group.js.map +1 -1
- package/dist/button.d.ts +5 -5
- package/dist/button.js +7 -140
- package/dist/button.js.map +1 -1
- package/dist/calendar.js +12 -287
- package/dist/calendar.js.map +1 -1
- package/dist/card.js +5 -35
- package/dist/card.js.map +1 -1
- package/dist/carousel.js +12 -386
- package/dist/carousel.js.map +1 -1
- package/dist/chart.js +16 -480
- package/dist/chart.js.map +1 -1
- package/dist/checkbox.d.ts +1 -1
- package/dist/checkbox.js +13 -48
- package/dist/checkbox.js.map +1 -1
- package/dist/chunk-322YCNVL.js +278 -0
- package/dist/chunk-322YCNVL.js.map +1 -0
- package/dist/chunk-3ACQVT7A.js +25 -0
- package/dist/chunk-3ACQVT7A.js.map +1 -0
- package/dist/chunk-3T65TLJX.js +334 -0
- package/dist/chunk-3T65TLJX.js.map +1 -0
- package/dist/chunk-6ZSGQHH2.js +192 -0
- package/dist/chunk-6ZSGQHH2.js.map +1 -0
- package/dist/chunk-7TBMLFGW.js +41 -0
- package/dist/chunk-7TBMLFGW.js.map +1 -0
- package/dist/chunk-B4H6RNDH.js +135 -0
- package/dist/chunk-B4H6RNDH.js.map +1 -0
- package/dist/chunk-BUXCGZ6X.js +219 -0
- package/dist/chunk-BUXCGZ6X.js.map +1 -0
- package/dist/chunk-CHII2QHH.js +58 -0
- package/dist/chunk-CHII2QHH.js.map +1 -0
- package/dist/chunk-DMNOXRRW.js +147 -0
- package/dist/chunk-DMNOXRRW.js.map +1 -0
- package/dist/chunk-EFSOSSIC.js +130 -0
- package/dist/chunk-EFSOSSIC.js.map +1 -0
- package/dist/chunk-FZDSVMKY.js +363 -0
- package/dist/chunk-FZDSVMKY.js.map +1 -0
- package/dist/chunk-GJOFIJS3.js +246 -0
- package/dist/chunk-GJOFIJS3.js.map +1 -0
- package/dist/chunk-HL3ZSYES.js +23 -0
- package/dist/chunk-HL3ZSYES.js.map +1 -0
- package/dist/chunk-JVLUBAPB.js +129 -0
- package/dist/chunk-JVLUBAPB.js.map +1 -0
- package/dist/chunk-KDPYSOYZ.js +64 -0
- package/dist/chunk-KDPYSOYZ.js.map +1 -0
- package/dist/chunk-KSMDANKI.js +43 -0
- package/dist/chunk-KSMDANKI.js.map +1 -0
- package/dist/chunk-MEKCCOP5.js +46 -0
- package/dist/chunk-MEKCCOP5.js.map +1 -0
- package/dist/chunk-NOFXVRWL.js +451 -0
- package/dist/chunk-NOFXVRWL.js.map +1 -0
- package/dist/chunk-PC5MHNVA.js +171 -0
- package/dist/chunk-PC5MHNVA.js.map +1 -0
- package/dist/chunk-QKAQZ2GU.js +122 -0
- package/dist/chunk-QKAQZ2GU.js.map +1 -0
- package/dist/chunk-QZHSHSVV.js +26 -0
- package/dist/chunk-QZHSHSVV.js.map +1 -0
- package/dist/chunk-RBMK26XD.js +19 -0
- package/dist/chunk-RBMK26XD.js.map +1 -0
- package/dist/chunk-SFNJGF6M.js +262 -0
- package/dist/chunk-SFNJGF6M.js.map +1 -0
- package/dist/chunk-UJJNLGTM.js +112 -0
- package/dist/chunk-UJJNLGTM.js.map +1 -0
- package/dist/chunk-VGR4ZWJ3.js +418 -0
- package/dist/chunk-VGR4ZWJ3.js.map +1 -0
- package/dist/chunk-XG47P6D4.js +99 -0
- package/dist/chunk-XG47P6D4.js.map +1 -0
- package/dist/chunk-XZZAHNVM.js +21 -0
- package/dist/chunk-XZZAHNVM.js.map +1 -0
- package/dist/chunk-Y4TTYVNE.js +36 -0
- package/dist/chunk-Y4TTYVNE.js.map +1 -0
- package/dist/chunk-YDWIHW6Q.js +69 -0
- package/dist/chunk-YDWIHW6Q.js.map +1 -0
- package/dist/collapsible.js +6 -35
- package/dist/collapsible.js.map +1 -1
- package/dist/combobox.js +26 -694
- package/dist/combobox.js.map +1 -1
- package/dist/cta.d.ts +66 -0
- package/dist/cta.js +358 -0
- package/dist/cta.js.map +1 -0
- package/dist/currency-selector.d.ts +42 -0
- package/dist/currency-selector.js +192 -0
- package/dist/currency-selector.js.map +1 -0
- package/dist/date-picker.d.ts +18 -10
- package/dist/date-picker.js +105 -430
- package/dist/date-picker.js.map +1 -1
- package/dist/details-card.d.ts +19 -0
- package/dist/details-card.js +267 -0
- package/dist/details-card.js.map +1 -0
- package/dist/dialog.js +36 -146
- package/dist/dialog.js.map +1 -1
- package/dist/dropdown-menu.d.ts +1 -1
- package/dist/dropdown-menu.js +20 -358
- package/dist/dropdown-menu.js.map +1 -1
- package/dist/dropzone.js +13 -40
- package/dist/dropzone.js.map +1 -1
- package/dist/editorial-card.d.ts +29 -0
- package/dist/editorial-card.js +311 -0
- package/dist/editorial-card.js.map +1 -0
- package/dist/empty-state.js +5 -35
- package/dist/empty-state.js.map +1 -1
- package/dist/field.js +30 -135
- package/dist/field.js.map +1 -1
- package/dist/footer.d.ts +47 -0
- package/dist/footer.js +430 -0
- package/dist/footer.js.map +1 -0
- package/dist/funnel-chart.js +42 -415
- package/dist/funnel-chart.js.map +1 -1
- package/dist/gallery-indicator.d.ts +18 -0
- package/dist/gallery-indicator.js +12 -0
- package/dist/gallery-indicator.js.map +1 -0
- package/dist/heatmap-chart.d.ts +98 -0
- package/dist/heatmap-chart.js +248 -0
- package/dist/heatmap-chart.js.map +1 -0
- package/dist/infotip.d.ts +11 -0
- package/dist/infotip.js +66 -0
- package/dist/infotip.js.map +1 -0
- package/dist/input-group.d.ts +2 -1
- package/dist/input-group.js +15 -371
- package/dist/input-group.js.map +1 -1
- package/dist/input-size-context.js +5 -19
- package/dist/input-size-context.js.map +1 -1
- package/dist/input.js +6 -78
- package/dist/input.js.map +1 -1
- package/dist/item.js +5 -35
- package/dist/item.js.map +1 -1
- package/dist/kpi-card.js +12 -52
- package/dist/kpi-card.js.map +1 -1
- package/dist/label.js +5 -64
- package/dist/label.js.map +1 -1
- package/dist/line-chart.js +9 -166
- package/dist/line-chart.js.map +1 -1
- package/dist/logo.js +4 -141
- package/dist/logo.js.map +1 -1
- package/dist/map-indicator.d.ts +13 -0
- package/dist/map-indicator.js +109 -0
- package/dist/map-indicator.js.map +1 -0
- package/dist/match.d.ts +16 -0
- package/dist/match.js +113 -0
- package/dist/match.js.map +1 -0
- package/dist/media-gallery-hero.d.ts +60 -0
- package/dist/media-gallery-hero.js +362 -0
- package/dist/media-gallery-hero.js.map +1 -0
- package/dist/media-player.d.ts +60 -0
- package/dist/media-player.js +1394 -0
- package/dist/media-player.js.map +1 -0
- package/dist/number-input.js +30 -325
- package/dist/number-input.js.map +1 -1
- package/dist/page-header.js +4 -32
- package/dist/page-header.js.map +1 -1
- package/dist/pagination.d.ts +1 -0
- package/dist/pagination.js +27 -161
- package/dist/pagination.js.map +1 -1
- package/dist/password-input.d.ts +1 -0
- package/dist/password-input.js +21 -319
- package/dist/password-input.js.map +1 -1
- package/dist/phone-input.d.ts +2 -1
- package/dist/phone-input.js +148 -359
- package/dist/phone-input.js.map +1 -1
- package/dist/photo-gallery.d.ts +1 -1
- package/dist/photo-gallery.js +97 -393
- package/dist/photo-gallery.js.map +1 -1
- package/dist/pie-chart.js +17 -52
- package/dist/pie-chart.js.map +1 -1
- package/dist/popover.js +13 -158
- package/dist/popover.js.map +1 -1
- package/dist/price-tag.d.ts +35 -0
- package/dist/price-tag.js +178 -0
- package/dist/price-tag.js.map +1 -0
- package/dist/progress.d.ts +5 -2
- package/dist/progress.js +14 -303
- package/dist/progress.js.map +1 -1
- package/dist/property-listing-card.d.ts +32 -0
- package/dist/property-listing-card.js +235 -0
- package/dist/property-listing-card.js.map +1 -0
- package/dist/radar-chart.d.ts +110 -0
- package/dist/radar-chart.js +147 -0
- package/dist/radar-chart.js.map +1 -0
- package/dist/radio-group.js +15 -50
- package/dist/radio-group.js.map +1 -1
- package/dist/review-block.d.ts +20 -0
- package/dist/review-block.js +10 -0
- package/dist/review-block.js.map +1 -0
- package/dist/rich-text-editor.js +172 -433
- package/dist/rich-text-editor.js.map +1 -1
- package/dist/scatter-chart.d.ts +142 -0
- package/dist/scatter-chart.js +252 -0
- package/dist/scatter-chart.js.map +1 -0
- package/dist/search-input.d.ts +1 -0
- package/dist/search-input.js +22 -320
- package/dist/search-input.js.map +1 -1
- package/dist/select.js +15 -292
- package/dist/select.js.map +1 -1
- package/dist/separator.js +5 -68
- package/dist/separator.js.map +1 -1
- package/dist/sheet.js +14 -271
- package/dist/sheet.js.map +1 -1
- package/dist/sidebar.d.ts +1 -1
- package/dist/sidebar.js +89 -494
- package/dist/sidebar.js.map +1 -1
- package/dist/size-context.js +5 -17
- package/dist/size-context.js.map +1 -1
- package/dist/skeleton.js +4 -44
- package/dist/skeleton.js.map +1 -1
- package/dist/slider.d.ts +28 -0
- package/dist/slider.js +152 -0
- package/dist/slider.js.map +1 -0
- package/dist/sparkline.js +33 -341
- package/dist/sparkline.js.map +1 -1
- package/dist/stepper.js +5 -35
- package/dist/stepper.js.map +1 -1
- package/dist/styles.css +9593 -2
- package/dist/switch.js +13 -48
- package/dist/switch.js.map +1 -1
- package/dist/tab-list.js +35 -306
- package/dist/tab-list.js.map +1 -1
- package/dist/table.js +5 -32
- package/dist/table.js.map +1 -1
- package/dist/tabs.js +10 -150
- package/dist/tabs.js.map +1 -1
- package/dist/tag.d.ts +7 -6
- package/dist/tag.js +101 -97
- package/dist/tag.js.map +1 -1
- package/dist/testimonial-block.d.ts +34 -0
- package/dist/testimonial-block.js +377 -0
- package/dist/testimonial-block.js.map +1 -0
- package/dist/textarea.js +6 -73
- package/dist/textarea.js.map +1 -1
- package/dist/time-picker.js +119 -279
- package/dist/time-picker.js.map +1 -1
- package/dist/toast.js +27 -132
- package/dist/toast.js.map +1 -1
- package/dist/tooltip.d.ts +5 -5
- package/dist/tooltip.js +7 -90
- package/dist/tooltip.js.map +1 -1
- package/dist/tree-map.js +41 -414
- package/dist/tree-map.js.map +1 -1
- package/dist/waterfall-chart.d.ts +129 -0
- package/dist/waterfall-chart.js +577 -0
- package/dist/waterfall-chart.js.map +1 -0
- package/package.json +98 -28
- package/dist/base.css +0 -32
- package/dist/files/red-hat-display-latin-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-900-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-300-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-600-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-700-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-800-normal.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-italic.woff2 +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff +0 -0
- package/dist/files/red-hat-display-latin-ext-900-normal.woff2 +0 -0
- package/dist/index.d.ts +0 -87
- package/dist/index.js +0 -10448
- package/dist/index.js.map +0 -1
- package/dist/red-hat-display.css +0 -2
- package/dist/theme/giddaa.css +0 -2
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
useUncontrolled
|
|
4
|
+
} from "./chunk-QZHSHSVV.js";
|
|
5
|
+
import {
|
|
6
|
+
Select,
|
|
7
|
+
SelectContent,
|
|
8
|
+
SelectItem,
|
|
9
|
+
SelectTrigger,
|
|
10
|
+
SelectValue
|
|
11
|
+
} from "./chunk-SFNJGF6M.js";
|
|
12
|
+
import "./chunk-HL3ZSYES.js";
|
|
13
|
+
import {
|
|
14
|
+
cn
|
|
15
|
+
} from "./chunk-Y4TTYVNE.js";
|
|
16
|
+
|
|
17
|
+
// src/currency-selector.tsx
|
|
18
|
+
import { cva } from "class-variance-authority";
|
|
19
|
+
import { CheckIcon } from "lucide-react";
|
|
20
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
21
|
+
var DEFAULT_FLAG = [
|
|
22
|
+
{ color: "#1f8f55" },
|
|
23
|
+
{ color: "#ffffff" },
|
|
24
|
+
{ color: "#1f8f55" }
|
|
25
|
+
];
|
|
26
|
+
var currencySelectorTriggerVariants = cva(
|
|
27
|
+
"group/currency-selector inline-flex w-fit shrink-0 items-center rounded-full border-0 font-bold whitespace-nowrap outline-none transition-[background-color,color,box-shadow] focus-visible:shadow-[0_0_0_2px_var(--color-line-focus)] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60 data-popup-open:text-fg-primary [&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:text-current",
|
|
28
|
+
{
|
|
29
|
+
variants: {
|
|
30
|
+
size: {
|
|
31
|
+
sm: "h-8 gap-1.5 px-3 text-gdt-xs",
|
|
32
|
+
md: "h-11 gap-2 px-4 text-gdt-sm",
|
|
33
|
+
lg: "h-12 gap-2.5 px-5 text-gdt-md"
|
|
34
|
+
},
|
|
35
|
+
withBackground: {
|
|
36
|
+
true: "bg-action-tertiary text-fg-primary hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed data-popup-open:bg-action-tertiary-hover",
|
|
37
|
+
false: "bg-transparent px-0 text-fg-primary hover:text-fg-brand active:text-fg-brand data-popup-open:bg-transparent"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
defaultVariants: {
|
|
41
|
+
size: "md",
|
|
42
|
+
withBackground: true
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
function findOption(options, value) {
|
|
47
|
+
return options.find((option) => option.code === value);
|
|
48
|
+
}
|
|
49
|
+
function CurrencyFlag({
|
|
50
|
+
flag = DEFAULT_FLAG,
|
|
51
|
+
label,
|
|
52
|
+
className
|
|
53
|
+
}) {
|
|
54
|
+
const total = flag.reduce((sum, stripe) => sum + (stripe.size ?? 1), 0);
|
|
55
|
+
let cursor = 0;
|
|
56
|
+
const stops = flag.flatMap((stripe) => {
|
|
57
|
+
const start = cursor;
|
|
58
|
+
cursor += (stripe.size ?? 1) / total * 100;
|
|
59
|
+
return [
|
|
60
|
+
`${stripe.color} ${start.toFixed(2)}%`,
|
|
61
|
+
`${stripe.color} ${cursor.toFixed(2)}%`
|
|
62
|
+
];
|
|
63
|
+
});
|
|
64
|
+
return /* @__PURE__ */ jsx(
|
|
65
|
+
"span",
|
|
66
|
+
{
|
|
67
|
+
role: "img",
|
|
68
|
+
"aria-label": label ?? "Currency flag",
|
|
69
|
+
"data-slot": "currency-flag",
|
|
70
|
+
className: cn(
|
|
71
|
+
"inline-block h-4 w-6 shrink-0 overflow-hidden rounded-[3px] bg-cover shadow-[inset_0_0_0_1px_rgb(0_0_0/0.04)]",
|
|
72
|
+
className
|
|
73
|
+
),
|
|
74
|
+
style: { backgroundImage: `linear-gradient(90deg, ${stops.join(", ")})` }
|
|
75
|
+
}
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
function CurrencySelector({
|
|
79
|
+
options,
|
|
80
|
+
value,
|
|
81
|
+
defaultValue,
|
|
82
|
+
onValueChange,
|
|
83
|
+
open,
|
|
84
|
+
defaultOpen,
|
|
85
|
+
onOpenChange,
|
|
86
|
+
size = "md",
|
|
87
|
+
withBackground = true,
|
|
88
|
+
showFlag = true,
|
|
89
|
+
showOptionFlags = true,
|
|
90
|
+
contentClassName,
|
|
91
|
+
className,
|
|
92
|
+
placeholder = "Select currency",
|
|
93
|
+
type = "button",
|
|
94
|
+
...props
|
|
95
|
+
}) {
|
|
96
|
+
const fallbackValue = options[0]?.code;
|
|
97
|
+
const [selectedValue, setSelectedValue] = useUncontrolled({
|
|
98
|
+
value,
|
|
99
|
+
defaultValue,
|
|
100
|
+
finalValue: fallbackValue,
|
|
101
|
+
onChange: (nextValue) => {
|
|
102
|
+
const nextOption = findOption(options, nextValue);
|
|
103
|
+
if (nextOption) {
|
|
104
|
+
onValueChange?.(nextValue, nextOption);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const selectedOption = findOption(options, selectedValue);
|
|
109
|
+
const handleValueChange = (nextValue) => {
|
|
110
|
+
if (nextValue) {
|
|
111
|
+
setSelectedValue(nextValue);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
return /* @__PURE__ */ jsxs(
|
|
115
|
+
Select,
|
|
116
|
+
{
|
|
117
|
+
value: selectedValue,
|
|
118
|
+
onValueChange: handleValueChange,
|
|
119
|
+
open,
|
|
120
|
+
defaultOpen,
|
|
121
|
+
onOpenChange,
|
|
122
|
+
size,
|
|
123
|
+
children: [
|
|
124
|
+
/* @__PURE__ */ jsxs(
|
|
125
|
+
SelectTrigger,
|
|
126
|
+
{
|
|
127
|
+
type,
|
|
128
|
+
unstyled: true,
|
|
129
|
+
className: cn(
|
|
130
|
+
currencySelectorTriggerVariants({
|
|
131
|
+
size,
|
|
132
|
+
withBackground
|
|
133
|
+
}),
|
|
134
|
+
className
|
|
135
|
+
),
|
|
136
|
+
...props,
|
|
137
|
+
children: [
|
|
138
|
+
showFlag && selectedOption ? /* @__PURE__ */ jsx(
|
|
139
|
+
CurrencyFlag,
|
|
140
|
+
{
|
|
141
|
+
flag: selectedOption.flag,
|
|
142
|
+
label: `${selectedOption.countryCode ?? selectedOption.code} flag`
|
|
143
|
+
}
|
|
144
|
+
) : null,
|
|
145
|
+
/* @__PURE__ */ jsx(SelectValue, { placeholder, children: selectedOption?.code ?? placeholder })
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
/* @__PURE__ */ jsx(
|
|
150
|
+
SelectContent,
|
|
151
|
+
{
|
|
152
|
+
align: "start",
|
|
153
|
+
sideOffset: 8,
|
|
154
|
+
className: cn(
|
|
155
|
+
"w-65 rounded-[18px] border-line-subtle bg-surface-overlay p-2 shadow-3",
|
|
156
|
+
contentClassName
|
|
157
|
+
),
|
|
158
|
+
children: options.map((option) => /* @__PURE__ */ jsxs(
|
|
159
|
+
SelectItem,
|
|
160
|
+
{
|
|
161
|
+
value: option.code,
|
|
162
|
+
className: "min-h-12 rounded-lg px-3 text-gdt-sm data-selected:bg-surface-brand-subtle data-selected:font-normal data-selected:text-fg-brand data-highlighted:bg-surface-brand-subtle",
|
|
163
|
+
children: [
|
|
164
|
+
showOptionFlags ? /* @__PURE__ */ jsx(
|
|
165
|
+
CurrencyFlag,
|
|
166
|
+
{
|
|
167
|
+
flag: option.flag,
|
|
168
|
+
label: `${option.countryCode ?? option.code} flag`
|
|
169
|
+
}
|
|
170
|
+
) : null,
|
|
171
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1 truncate", children: [
|
|
172
|
+
option.code,
|
|
173
|
+
" - ",
|
|
174
|
+
option.label
|
|
175
|
+
] }),
|
|
176
|
+
option.code === selectedValue ? /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto size-4 text-fg-brand" }) : null
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
option.code
|
|
180
|
+
))
|
|
181
|
+
}
|
|
182
|
+
)
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
export {
|
|
188
|
+
CurrencyFlag,
|
|
189
|
+
CurrencySelector,
|
|
190
|
+
currencySelectorTriggerVariants
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=currency-selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/currency-selector.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { CheckIcon } from \"lucide-react\";\nimport type * as React from \"react\";\n\nimport { cn } from \"./lib/cn\";\nimport { useUncontrolled } from \"./lib/use-uncontrolled\";\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectItem,\n\tSelectTrigger,\n\tSelectValue,\n} from \"./select\";\n\ntype CurrencyFlagStripe = {\n\tcolor: string;\n\tsize?: number;\n};\n\ntype CurrencySelectorOption = {\n\tcode: string;\n\tlabel: string;\n\tcountryCode?: string;\n\tflag?: readonly CurrencyFlagStripe[];\n};\n\ntype CurrencySelectorSize = NonNullable<\n\tVariantProps<typeof currencySelectorTriggerVariants>[\"size\"]\n>;\n\ntype CurrencySelectorProps = Omit<\n\tReact.ComponentProps<\"button\">,\n\t\"children\" | \"defaultValue\" | \"onChange\" | \"value\"\n> & {\n\toptions: readonly CurrencySelectorOption[];\n\tvalue?: string;\n\tdefaultValue?: string;\n\tonValueChange?: (value: string, option: CurrencySelectorOption) => void;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tsize?: CurrencySelectorSize;\n\twithBackground?: boolean;\n\tshowFlag?: boolean;\n\tshowOptionFlags?: boolean;\n\tcontentClassName?: string;\n\tplaceholder?: string;\n};\n\nconst DEFAULT_FLAG: readonly CurrencyFlagStripe[] = [\n\t{ color: \"#1f8f55\" },\n\t{ color: \"#ffffff\" },\n\t{ color: \"#1f8f55\" },\n];\n\nconst currencySelectorTriggerVariants = cva(\n\t\"group/currency-selector inline-flex w-fit shrink-0 items-center rounded-full border-0 font-bold whitespace-nowrap outline-none transition-[background-color,color,box-shadow] focus-visible:shadow-[0_0_0_2px_var(--color-line-focus)] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60 data-popup-open:text-fg-primary [&_svg]:size-3.5 [&_svg]:shrink-0 [&_svg]:text-current\",\n\t{\n\t\tvariants: {\n\t\t\tsize: {\n\t\t\t\tsm: \"h-8 gap-1.5 px-3 text-gdt-xs\",\n\t\t\t\tmd: \"h-11 gap-2 px-4 text-gdt-sm\",\n\t\t\t\tlg: \"h-12 gap-2.5 px-5 text-gdt-md\",\n\t\t\t},\n\t\t\twithBackground: {\n\t\t\t\ttrue: \"bg-action-tertiary text-fg-primary hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed data-popup-open:bg-action-tertiary-hover\",\n\t\t\t\tfalse:\n\t\t\t\t\t\"bg-transparent px-0 text-fg-primary hover:text-fg-brand active:text-fg-brand data-popup-open:bg-transparent\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tsize: \"md\",\n\t\t\twithBackground: true,\n\t\t},\n\t},\n);\n\nfunction findOption(\n\toptions: readonly CurrencySelectorOption[],\n\tvalue: string | undefined,\n) {\n\treturn options.find((option) => option.code === value);\n}\n\nfunction CurrencyFlag({\n\tflag = DEFAULT_FLAG,\n\tlabel,\n\tclassName,\n}: {\n\tflag?: readonly CurrencyFlagStripe[];\n\tlabel?: string;\n\tclassName?: string;\n}) {\n\tconst total = flag.reduce((sum, stripe) => sum + (stripe.size ?? 1), 0);\n\tlet cursor = 0;\n\tconst stops = flag.flatMap((stripe) => {\n\t\tconst start = cursor;\n\t\tcursor += ((stripe.size ?? 1) / total) * 100;\n\n\t\treturn [\n\t\t\t`${stripe.color} ${start.toFixed(2)}%`,\n\t\t\t`${stripe.color} ${cursor.toFixed(2)}%`,\n\t\t];\n\t});\n\n\treturn (\n\t\t<span\n\t\t\trole=\"img\"\n\t\t\taria-label={label ?? \"Currency flag\"}\n\t\t\tdata-slot=\"currency-flag\"\n\t\t\tclassName={cn(\n\t\t\t\t\"inline-block h-4 w-6 shrink-0 overflow-hidden rounded-[3px] bg-cover shadow-[inset_0_0_0_1px_rgb(0_0_0/0.04)]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tstyle={{ backgroundImage: `linear-gradient(90deg, ${stops.join(\", \")})` }}\n\t\t/>\n\t);\n}\n\nfunction CurrencySelector({\n\toptions,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\topen,\n\tdefaultOpen,\n\tonOpenChange,\n\tsize = \"md\",\n\twithBackground = true,\n\tshowFlag = true,\n\tshowOptionFlags = true,\n\tcontentClassName,\n\tclassName,\n\tplaceholder = \"Select currency\",\n\ttype = \"button\",\n\t...props\n}: CurrencySelectorProps) {\n\tconst fallbackValue = options[0]?.code;\n\tconst [selectedValue, setSelectedValue] = useUncontrolled({\n\t\tvalue,\n\t\tdefaultValue,\n\t\tfinalValue: fallbackValue,\n\t\tonChange: (nextValue) => {\n\t\t\tconst nextOption = findOption(options, nextValue);\n\n\t\t\tif (nextOption) {\n\t\t\t\tonValueChange?.(nextValue, nextOption);\n\t\t\t}\n\t\t},\n\t});\n\tconst selectedOption = findOption(options, selectedValue);\n\tconst handleValueChange = (nextValue: string | null) => {\n\t\tif (nextValue) {\n\t\t\tsetSelectedValue(nextValue);\n\t\t}\n\t};\n\n\treturn (\n\t\t<Select\n\t\t\tvalue={selectedValue}\n\t\t\tonValueChange={handleValueChange}\n\t\t\topen={open}\n\t\t\tdefaultOpen={defaultOpen}\n\t\t\tonOpenChange={onOpenChange}\n\t\t\tsize={size}\n\t\t>\n\t\t\t<SelectTrigger\n\t\t\t\ttype={type}\n\t\t\t\tunstyled\n\t\t\t\tclassName={cn(\n\t\t\t\t\tcurrencySelectorTriggerVariants({\n\t\t\t\t\t\tsize,\n\t\t\t\t\t\twithBackground,\n\t\t\t\t\t}),\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{showFlag && selectedOption ? (\n\t\t\t\t\t<CurrencyFlag\n\t\t\t\t\t\tflag={selectedOption.flag}\n\t\t\t\t\t\tlabel={`${selectedOption.countryCode ?? selectedOption.code} flag`}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t\t<SelectValue placeholder={placeholder}>\n\t\t\t\t\t{selectedOption?.code ?? placeholder}\n\t\t\t\t</SelectValue>\n\t\t\t</SelectTrigger>\n\t\t\t<SelectContent\n\t\t\t\talign=\"start\"\n\t\t\t\tsideOffset={8}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"w-65 rounded-[18px] border-line-subtle bg-surface-overlay p-2 shadow-3\",\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{options.map((option) => (\n\t\t\t\t\t<SelectItem\n\t\t\t\t\t\tkey={option.code}\n\t\t\t\t\t\tvalue={option.code}\n\t\t\t\t\t\tclassName=\"min-h-12 rounded-lg px-3 text-gdt-sm data-selected:bg-surface-brand-subtle data-selected:font-normal data-selected:text-fg-brand data-highlighted:bg-surface-brand-subtle\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{showOptionFlags ? (\n\t\t\t\t\t\t\t<CurrencyFlag\n\t\t\t\t\t\t\t\tflag={option.flag}\n\t\t\t\t\t\t\t\tlabel={`${option.countryCode ?? option.code} flag`}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<span className=\"min-w-0 flex-1 truncate\">\n\t\t\t\t\t\t\t{option.code} - {option.label}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{option.code === selectedValue ? (\n\t\t\t\t\t\t\t<CheckIcon className=\"ml-auto size-4 text-fg-brand\" />\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</SelectItem>\n\t\t\t\t))}\n\t\t\t</SelectContent>\n\t\t</Select>\n\t);\n}\n\nexport {\n\tCurrencyFlag,\n\tCurrencySelector,\n\tcurrencySelectorTriggerVariants,\n\ttype CurrencyFlagStripe,\n\ttype CurrencySelectorOption,\n\ttype CurrencySelectorProps,\n\ttype CurrencySelectorSize,\n};\n"],"mappings":"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","names":[]}
|
package/dist/date-picker.d.ts
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { DateRange } from 'react-day-picker';
|
|
2
|
+
import { Matcher, DateRange } from 'react-day-picker';
|
|
3
3
|
export { DateRange } from 'react-day-picker';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
onChange?: (date: Date | undefined) => void;
|
|
5
|
+
type CaptionLayout = "label" | "dropdown" | "dropdown-months" | "dropdown-years";
|
|
6
|
+
interface DatePickerBaseProps {
|
|
8
7
|
disabled?: boolean;
|
|
9
8
|
placeholder?: string;
|
|
10
9
|
className?: string;
|
|
10
|
+
/** Caption style. Defaults to month + year dropdowns for quick navigation. */
|
|
11
|
+
captionLayout?: CaptionLayout;
|
|
12
|
+
/** Earliest navigable month. Defaults to 100 years before today. */
|
|
13
|
+
startMonth?: Date;
|
|
14
|
+
/** Latest navigable month. Defaults to 10 years after today. */
|
|
15
|
+
endMonth?: Date;
|
|
16
|
+
/** Dates that cannot be selected (react-day-picker matcher). */
|
|
17
|
+
disabledDates?: Matcher | Matcher[];
|
|
18
|
+
}
|
|
19
|
+
interface DatePickerProps extends DatePickerBaseProps {
|
|
20
|
+
value?: Date;
|
|
21
|
+
onChange?: (date: Date | undefined) => void;
|
|
11
22
|
}
|
|
12
|
-
declare function DatePicker({ value, onChange, disabled, placeholder, className, }: DatePickerProps): React.JSX.Element;
|
|
13
|
-
interface DateRangePickerProps {
|
|
23
|
+
declare function DatePicker({ value, onChange, disabled, placeholder, className, captionLayout, startMonth, endMonth, disabledDates, }: DatePickerProps): React.JSX.Element;
|
|
24
|
+
interface DateRangePickerProps extends DatePickerBaseProps {
|
|
14
25
|
value?: DateRange;
|
|
15
26
|
onChange?: (range: DateRange | undefined) => void;
|
|
16
|
-
disabled?: boolean;
|
|
17
|
-
placeholder?: string;
|
|
18
|
-
className?: string;
|
|
19
27
|
}
|
|
20
|
-
declare function DateRangePicker({ value, onChange, disabled, placeholder, className, }: DateRangePickerProps): React.JSX.Element;
|
|
28
|
+
declare function DateRangePicker({ value, onChange, disabled, placeholder, className, captionLayout, startMonth, endMonth, disabledDates, }: DateRangePickerProps): React.JSX.Element;
|
|
21
29
|
|
|
22
30
|
export { DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps };
|