@giddaa-housing/ui 0.1.0 → 1.1.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.d.ts +9 -10
- package/dist/accordion.js +41 -117
- package/dist/activity-timeline.d.ts +29 -0
- package/dist/activity-timeline.js +97 -0
- package/dist/alert.d.ts +8 -9
- package/dist/alert.js +53 -141
- package/dist/auth-layout.d.ts +23 -0
- package/dist/auth-layout.js +153 -0
- package/dist/avatar.d.ts +6 -6
- package/dist/avatar.js +40 -142
- package/dist/badge.d.ts +12 -13
- package/dist/badge.js +66 -114
- package/dist/bar-chart.d.ts +136 -114
- package/dist/bar-chart.js +244 -297
- package/dist/breadcrumb.d.ts +5 -5
- package/dist/breadcrumb.js +56 -148
- package/dist/bullet-chart.d.ts +33 -33
- package/dist/bullet-chart.js +123 -183
- package/dist/button-BZIeyUw6.d.ts +17 -0
- package/dist/button-group.d.ts +13 -16
- package/dist/button-group.js +38 -163
- package/dist/button.d.ts +2 -19
- package/dist/button.js +90 -142
- package/dist/calendar.d.ts +6 -6
- package/dist/calendar.js +134 -288
- package/dist/card.d.ts +14 -16
- package/dist/card.js +58 -174
- package/dist/carousel.d.ts +34 -35
- package/dist/carousel.js +319 -378
- package/dist/chart.d.ts +58 -59
- package/dist/chart.js +350 -466
- package/dist/checkbox.d.ts +10 -12
- package/dist/checkbox.js +84 -84
- package/dist/cn-BI_4DMBf.js +23 -0
- package/dist/collapsible.d.ts +7 -8
- package/dist/collapsible.js +23 -77
- package/dist/combobox.d.ts +10 -10
- package/dist/combobox.js +220 -696
- package/dist/cta.d.ts +64 -0
- package/dist/cta.js +192 -0
- package/dist/currency-selector.d.ts +41 -0
- package/dist/currency-selector.js +114 -0
- package/dist/data-table.d.ts +164 -0
- package/dist/data-table.js +673 -0
- package/dist/date-picker.d.ts +27 -20
- package/dist/date-picker.js +122 -520
- package/dist/details-card.d.ts +19 -0
- package/dist/details-card.js +118 -0
- package/dist/dialog.d.ts +13 -14
- package/dist/dialog.js +117 -320
- package/dist/dropdown-menu.d.ts +14 -14
- package/dist/dropdown-menu.js +170 -365
- package/dist/dropzone.d.ts +55 -55
- package/dist/dropzone.js +328 -467
- package/dist/editorial-card.d.ts +27 -0
- package/dist/editorial-card.js +144 -0
- package/dist/empty-state.d.ts +8 -9
- package/dist/empty-state.js +48 -135
- package/dist/field.d.ts +23 -25
- package/dist/field.js +111 -327
- package/dist/filter.d.ts +118 -0
- package/dist/filter.js +775 -0
- package/dist/footer.d.ts +40 -0
- package/dist/footer.js +227 -0
- package/dist/funnel-chart.d.ts +38 -41
- package/dist/funnel-chart.js +168 -563
- package/dist/gallery-indicator.d.ts +17 -0
- package/dist/gallery-indicator.js +75 -0
- package/dist/heatmap-chart.d.ts +95 -0
- package/dist/heatmap-chart.js +197 -0
- package/dist/infotip.d.ts +10 -0
- package/dist/infotip.js +40 -0
- package/dist/input-CfoEJ8A6.d.ts +12 -0
- package/dist/input-group.d.ts +16 -19
- package/dist/input-group.js +92 -372
- package/dist/input-size-context-C-SFx9sx.d.ts +10 -0
- package/dist/input-size-context.d.ts +2 -11
- package/dist/input-size-context.js +14 -20
- package/dist/input.d.ts +2 -13
- package/dist/input.js +23 -79
- package/dist/item.d.ts +7 -8
- package/dist/item.js +22 -89
- package/dist/kpi-card.d.ts +18 -20
- package/dist/kpi-card.js +84 -232
- package/dist/label.d.ts +6 -6
- package/dist/label.js +39 -66
- package/dist/line-chart.d.ts +88 -89
- package/dist/line-chart.js +143 -262
- package/dist/logo.d.ts +4 -4
- package/dist/logo.js +87 -141
- package/dist/map-indicator.d.ts +13 -0
- package/dist/map-indicator.js +83 -0
- package/dist/match.d.ts +15 -0
- package/dist/match.js +68 -0
- package/dist/media-gallery-hero.d.ts +58 -0
- package/dist/media-gallery-hero.js +201 -0
- package/dist/media-player.d.ts +60 -0
- package/dist/media-player.js +919 -0
- package/dist/multi-step-form.d.ts +56 -0
- package/dist/multi-step-form.js +342 -0
- package/dist/number-input.d.ts +34 -34
- package/dist/number-input.js +62 -413
- package/dist/page-header.d.ts +10 -11
- package/dist/page-header.js +34 -107
- package/dist/pagination.d.ts +17 -20
- package/dist/pagination.js +132 -341
- package/dist/password-input.d.ts +5 -12
- package/dist/password-input.js +32 -354
- package/dist/phone-input.d.ts +19 -19
- package/dist/phone-input.js +232 -561
- package/dist/photo-gallery.d.ts +20 -20
- package/dist/photo-gallery.js +314 -746
- package/dist/picker-lzgmsNfG.js +32 -0
- package/dist/pie-chart.d.ts +60 -60
- package/dist/pie-chart.js +141 -184
- package/dist/popover.d.ts +9 -9
- package/dist/popover.js +60 -156
- package/dist/price-tag.d.ts +34 -0
- package/dist/price-tag.js +118 -0
- package/dist/progress.d.ts +18 -16
- package/dist/progress.js +156 -300
- package/dist/property-listing-card.d.ts +29 -0
- package/dist/property-listing-card.js +117 -0
- package/dist/radar-chart.d.ts +108 -0
- package/dist/radar-chart.js +172 -0
- package/dist/radio-group.d.ts +11 -13
- package/dist/radio-group.js +47 -96
- package/dist/review-block.d.ts +18 -0
- package/dist/review-block.js +154 -0
- package/dist/rich-text-editor.d.ts +30 -14
- package/dist/rich-text-editor.js +594 -979
- package/dist/scatter-chart.d.ts +140 -0
- package/dist/scatter-chart.js +248 -0
- package/dist/search-input.d.ts +8 -15
- package/dist/search-input.js +58 -408
- package/dist/select.d.ts +8 -8
- package/dist/select.js +131 -291
- package/dist/separator.d.ts +8 -9
- package/dist/separator.js +31 -70
- package/dist/sheet.d.ts +11 -11
- package/dist/sheet.js +84 -262
- package/dist/sidebar.d.ts +32 -37
- package/dist/sidebar.js +380 -1055
- package/dist/size-context-D4mYvcg8.d.ts +10 -0
- package/dist/size-context.d.ts +2 -11
- package/dist/size-context.js +14 -18
- package/dist/skeleton.d.ts +4 -5
- package/dist/skeleton.js +9 -45
- package/dist/slider.d.ts +27 -0
- package/dist/slider.js +81 -0
- package/dist/sparkline.d.ts +43 -46
- package/dist/sparkline.js +223 -561
- package/dist/stepper.d.ts +23 -24
- package/dist/stepper.js +149 -276
- package/dist/styles.css +9995 -2
- package/dist/switch.d.ts +10 -12
- package/dist/switch.js +49 -106
- package/dist/table-card.d.ts +35 -0
- package/dist/table-card.js +125 -0
- package/dist/table.d.ts +18 -14
- package/dist/table.js +114 -182
- package/dist/tabs.d.ts +23 -15
- package/dist/tabs.js +62 -149
- package/dist/tag.d.ts +22 -23
- package/dist/tag.js +104 -156
- package/dist/testimonial-block.d.ts +33 -0
- package/dist/testimonial-block.js +208 -0
- package/dist/textarea-IS_D8pXf.d.ts +11 -0
- package/dist/textarea.d.ts +2 -12
- package/dist/textarea.js +20 -74
- package/dist/time-picker.d.ts +11 -11
- package/dist/time-picker.js +247 -464
- package/dist/toast.d.ts +16 -18
- package/dist/toast.js +154 -310
- package/dist/tooltip.d.ts +9 -10
- package/dist/tooltip.js +33 -91
- package/dist/tree-map.d.ts +54 -57
- package/dist/tree-map.js +231 -646
- package/dist/use-uncontrolled-CLfM1XbB.js +21 -0
- package/dist/waterfall-chart.d.ts +126 -0
- package/dist/waterfall-chart.js +480 -0
- package/package.json +123 -34
- package/dist/accordion.js.map +0 -1
- package/dist/alert.js.map +0 -1
- package/dist/avatar.js.map +0 -1
- package/dist/badge.js.map +0 -1
- package/dist/bar-chart.js.map +0 -1
- package/dist/base.css +0 -32
- package/dist/breadcrumb.js.map +0 -1
- package/dist/bullet-chart.js.map +0 -1
- package/dist/button-group.js.map +0 -1
- package/dist/button.js.map +0 -1
- package/dist/calendar.js.map +0 -1
- package/dist/card.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/chart.js.map +0 -1
- package/dist/checkbox.js.map +0 -1
- package/dist/collapsible.js.map +0 -1
- package/dist/combobox.js.map +0 -1
- package/dist/date-picker.js.map +0 -1
- package/dist/dialog.js.map +0 -1
- package/dist/dropdown-menu.js.map +0 -1
- package/dist/dropzone.js.map +0 -1
- package/dist/empty-state.js.map +0 -1
- package/dist/field.js.map +0 -1
- 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/funnel-chart.js.map +0 -1
- package/dist/index.d.ts +0 -87
- package/dist/index.js +0 -10448
- package/dist/index.js.map +0 -1
- package/dist/input-group.js.map +0 -1
- package/dist/input-size-context.js.map +0 -1
- package/dist/input.js.map +0 -1
- package/dist/item.js.map +0 -1
- package/dist/kpi-card.js.map +0 -1
- package/dist/label.js.map +0 -1
- package/dist/line-chart.js.map +0 -1
- package/dist/logo.js.map +0 -1
- package/dist/number-input.js.map +0 -1
- package/dist/page-header.js.map +0 -1
- package/dist/pagination.js.map +0 -1
- package/dist/password-input.js.map +0 -1
- package/dist/phone-input.js.map +0 -1
- package/dist/photo-gallery.js.map +0 -1
- package/dist/pie-chart.js.map +0 -1
- package/dist/popover.js.map +0 -1
- package/dist/progress.js.map +0 -1
- package/dist/radio-group.js.map +0 -1
- package/dist/red-hat-display.css +0 -2
- package/dist/rich-text-editor.js.map +0 -1
- package/dist/search-input.js.map +0 -1
- package/dist/select.js.map +0 -1
- package/dist/separator.js.map +0 -1
- package/dist/sheet.js.map +0 -1
- package/dist/sidebar.js.map +0 -1
- package/dist/size-context.js.map +0 -1
- package/dist/skeleton.js.map +0 -1
- package/dist/sparkline.js.map +0 -1
- package/dist/stepper.js.map +0 -1
- package/dist/switch.js.map +0 -1
- package/dist/tab-list.d.ts +0 -38
- package/dist/tab-list.js +0 -394
- package/dist/tab-list.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/tag.js.map +0 -1
- package/dist/textarea.js.map +0 -1
- package/dist/theme/giddaa.css +0 -2
- package/dist/time-picker.js.map +0 -1
- package/dist/toast.js.map +0 -1
- package/dist/tooltip.js.map +0 -1
- package/dist/tree-map.js.map +0 -1
package/dist/tag.js
CHANGED
|
@@ -1,160 +1,108 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
3
|
+
import { useComponentSize } from "./size-context.js";
|
|
3
4
|
import { X } from "lucide-react";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { cva } from "class-variance-authority";
|
|
7
|
+
//#region src/tag.tsx
|
|
8
|
+
const tagVariants = cva("group/tag inline-flex w-full shrink-0 items-center border bg-surface-raised font-bold leading-none text-fg-primary whitespace-nowrap transition-[background-color,border-color,color,box-shadow] select-none data-[shape=full]:rounded-4xl data-[shape=box]:data-[size=sm]:rounded-md data-[shape=box]:data-[size=md]:rounded-lg data-[shape=box]:data-[size=lg]:rounded-xl data-[has-close=true]:data-[size=sm]:pr-5 data-[has-close=true]:data-[size=md]:pr-7 data-[has-close=true]:data-[size=lg]:pr-8", {
|
|
9
|
+
variants: {
|
|
10
|
+
size: {
|
|
11
|
+
sm: "gap-1 py-0.5 pl-2 pr-1 text-gdt-xs",
|
|
12
|
+
md: "gap-1.5 py-1 pl-2.5 pr-1.5 text-gdt-sm",
|
|
13
|
+
lg: "gap-2 py-1.5 pl-3 pr-2 text-gdt-md"
|
|
14
|
+
},
|
|
15
|
+
border: {
|
|
16
|
+
true: "border-line",
|
|
17
|
+
false: "border-transparent"
|
|
18
|
+
},
|
|
19
|
+
clickable: {
|
|
20
|
+
true: "cursor-pointer hover:border-line-strong hover:bg-action-tertiary-hover active:border-line-strong active:bg-action-tertiary-pressed outline-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
|
|
21
|
+
false: "cursor-default"
|
|
22
|
+
},
|
|
23
|
+
disabled: {
|
|
24
|
+
true: "border-line-subtle bg-surface text-fg-caption-placeholder",
|
|
25
|
+
false: ""
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: {
|
|
29
|
+
size: "md",
|
|
30
|
+
border: false,
|
|
31
|
+
clickable: false,
|
|
32
|
+
disabled: false
|
|
33
|
+
}
|
|
32
34
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
function
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
const tagCloseVariants = cva("absolute top-1/2 inline-flex shrink-0 -translate-y-1/2 items-center justify-center rounded-full text-current transition-[background-color,color] outline-none hover:bg-action-tertiary-hover hover:text-fg-primary focus-visible:bg-action-tertiary-hover focus-visible:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:bg-action-tertiary-pressed disabled:pointer-events-none disabled:text-fg-caption-placeholder", {
|
|
36
|
+
variants: { size: {
|
|
37
|
+
sm: "right-1 size-4 [&>svg]:size-2.5",
|
|
38
|
+
md: "right-1.5 size-5 [&>svg]:size-3",
|
|
39
|
+
lg: "right-2 size-5 [&>svg]:size-3.5"
|
|
40
|
+
} },
|
|
41
|
+
defaultVariants: { size: "md" }
|
|
42
|
+
});
|
|
43
|
+
function Tag({ label, leadingIcon, onClose, closeButtonProps, onClick, size, shape = "full", border = false, clickable = false, disabled = false, className, ...props }) {
|
|
44
|
+
const resolvedSize = useComponentSize(size);
|
|
45
|
+
const isInteractive = clickable && !disabled;
|
|
46
|
+
const { "aria-label": closeAriaLabel = `Remove ${label}`, className: closeClassName, onKeyDown: onCloseKeyDown, ...resolvedCloseButtonProps } = closeButtonProps ?? {};
|
|
47
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
48
|
+
"data-slot": "tag",
|
|
49
|
+
className: "relative inline-flex w-fit shrink-0",
|
|
50
|
+
children: [clickable ? /* @__PURE__ */ jsx("button", {
|
|
51
|
+
type: "button",
|
|
52
|
+
"data-slot": "tag-surface",
|
|
53
|
+
"data-shape": shape,
|
|
54
|
+
"data-size": resolvedSize,
|
|
55
|
+
"data-has-close": Boolean(onClose),
|
|
56
|
+
disabled,
|
|
57
|
+
className: cn(tagVariants({
|
|
58
|
+
size: resolvedSize,
|
|
59
|
+
border,
|
|
60
|
+
clickable: isInteractive,
|
|
61
|
+
disabled
|
|
62
|
+
}), className),
|
|
63
|
+
onClick,
|
|
64
|
+
...props,
|
|
65
|
+
children: /* @__PURE__ */ jsx(TagContent, {
|
|
66
|
+
label,
|
|
67
|
+
leadingIcon
|
|
68
|
+
})
|
|
69
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
70
|
+
"data-slot": "tag-surface",
|
|
71
|
+
"data-shape": shape,
|
|
72
|
+
"data-size": resolvedSize,
|
|
73
|
+
"data-has-close": Boolean(onClose),
|
|
74
|
+
className: cn(tagVariants({
|
|
75
|
+
size: resolvedSize,
|
|
76
|
+
border,
|
|
77
|
+
clickable: false,
|
|
78
|
+
disabled
|
|
79
|
+
}), className),
|
|
80
|
+
children: /* @__PURE__ */ jsx(TagContent, {
|
|
81
|
+
label,
|
|
82
|
+
leadingIcon
|
|
83
|
+
})
|
|
84
|
+
}), onClose && /* @__PURE__ */ jsx("button", {
|
|
85
|
+
type: "button",
|
|
86
|
+
"aria-label": closeAriaLabel,
|
|
87
|
+
disabled,
|
|
88
|
+
className: cn(tagCloseVariants({ size: resolvedSize }), closeClassName),
|
|
89
|
+
onClick: (e) => {
|
|
90
|
+
e.stopPropagation();
|
|
91
|
+
onClose(e);
|
|
92
|
+
},
|
|
93
|
+
onKeyDown: onCloseKeyDown,
|
|
94
|
+
...resolvedCloseButtonProps,
|
|
95
|
+
children: /* @__PURE__ */ jsx(X, { "aria-hidden": "true" })
|
|
96
|
+
})]
|
|
97
|
+
});
|
|
44
98
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
size: {
|
|
53
|
-
sm: "gap-1 py-0.5 pl-2 pr-1 text-gdt-xs",
|
|
54
|
-
md: "gap-1.5 py-1 pl-2.5 pr-1.5 text-gdt-sm",
|
|
55
|
-
lg: "gap-2 py-1.5 pl-3 pr-2 text-gdt-md"
|
|
56
|
-
},
|
|
57
|
-
border: {
|
|
58
|
-
true: "border-line",
|
|
59
|
-
false: "border-transparent"
|
|
60
|
-
},
|
|
61
|
-
clickable: {
|
|
62
|
-
true: "cursor-pointer hover:bg-action-tertiary-hover active:bg-action-tertiary-pressed outline-none focus-visible:border-line-focus focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]",
|
|
63
|
-
false: "cursor-default"
|
|
64
|
-
},
|
|
65
|
-
disabled: {
|
|
66
|
-
true: "opacity-50 pointer-events-none",
|
|
67
|
-
false: ""
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
defaultVariants: {
|
|
71
|
-
size: "md",
|
|
72
|
-
border: false,
|
|
73
|
-
clickable: false,
|
|
74
|
-
disabled: false
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
);
|
|
78
|
-
var tagCloseVariants = cva(
|
|
79
|
-
"inline-flex shrink-0 items-center justify-center rounded-full text-fg-secondary transition-[background-color,color] outline-none hover:bg-action-tertiary-hover hover:text-fg-primary focus-visible:bg-action-tertiary-hover focus-visible:text-fg-primary focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)] active:bg-action-tertiary-pressed disabled:pointer-events-none",
|
|
80
|
-
{
|
|
81
|
-
variants: {
|
|
82
|
-
size: {
|
|
83
|
-
sm: "size-4 [&>svg]:size-2.5",
|
|
84
|
-
md: "size-5 [&>svg]:size-3",
|
|
85
|
-
lg: "size-5 [&>svg]:size-3.5"
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
defaultVariants: {
|
|
89
|
-
size: "md"
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
);
|
|
93
|
-
function Tag({
|
|
94
|
-
label,
|
|
95
|
-
leadingIcon,
|
|
96
|
-
onClose,
|
|
97
|
-
onClick,
|
|
98
|
-
size,
|
|
99
|
-
border = false,
|
|
100
|
-
clickable = false,
|
|
101
|
-
disabled = false,
|
|
102
|
-
className
|
|
103
|
-
}) {
|
|
104
|
-
const resolvedSize = useComponentSize(size);
|
|
105
|
-
const handleKeyDown = (e) => {
|
|
106
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
107
|
-
e.preventDefault();
|
|
108
|
-
onClick?.();
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
return (
|
|
112
|
-
// biome-ignore lint/a11y/noStaticElementInteractions: clickable tags set button semantics, focus, and keyboard activation while still allowing a nested close action.
|
|
113
|
-
/* @__PURE__ */ jsxs(
|
|
114
|
-
"div",
|
|
115
|
-
{
|
|
116
|
-
role: clickable ? "button" : void 0,
|
|
117
|
-
tabIndex: clickable && !disabled ? 0 : void 0,
|
|
118
|
-
"aria-disabled": disabled ? true : void 0,
|
|
119
|
-
"data-slot": "tag",
|
|
120
|
-
className: cn(
|
|
121
|
-
tagVariants({ size: resolvedSize, border, clickable, disabled }),
|
|
122
|
-
className
|
|
123
|
-
),
|
|
124
|
-
onClick: clickable ? onClick : void 0,
|
|
125
|
-
onKeyDown: clickable ? handleKeyDown : void 0,
|
|
126
|
-
children: [
|
|
127
|
-
leadingIcon && /* @__PURE__ */ jsx2(
|
|
128
|
-
"span",
|
|
129
|
-
{
|
|
130
|
-
"aria-hidden": "true",
|
|
131
|
-
"data-slot": "tag-leading-icon",
|
|
132
|
-
className: "inline-flex shrink-0 items-center [&>svg]:size-[1em]",
|
|
133
|
-
children: leadingIcon
|
|
134
|
-
}
|
|
135
|
-
),
|
|
136
|
-
/* @__PURE__ */ jsx2("span", { children: label }),
|
|
137
|
-
/* @__PURE__ */ jsx2(
|
|
138
|
-
"button",
|
|
139
|
-
{
|
|
140
|
-
type: "button",
|
|
141
|
-
"aria-label": `Remove ${label}`,
|
|
142
|
-
disabled,
|
|
143
|
-
className: cn(tagCloseVariants({ size: resolvedSize })),
|
|
144
|
-
onClick: (e) => {
|
|
145
|
-
e.stopPropagation();
|
|
146
|
-
onClose?.(e);
|
|
147
|
-
},
|
|
148
|
-
children: /* @__PURE__ */ jsx2(X, { "aria-hidden": "true" })
|
|
149
|
-
}
|
|
150
|
-
)
|
|
151
|
-
]
|
|
152
|
-
}
|
|
153
|
-
)
|
|
154
|
-
);
|
|
99
|
+
function TagContent({ label, leadingIcon }) {
|
|
100
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [leadingIcon && /* @__PURE__ */ jsx("span", {
|
|
101
|
+
"aria-hidden": "true",
|
|
102
|
+
"data-slot": "tag-leading-icon",
|
|
103
|
+
className: "inline-flex shrink-0 items-center [&>svg]:size-[1em]",
|
|
104
|
+
children: leadingIcon
|
|
105
|
+
}), /* @__PURE__ */ jsx("span", { children: label })] });
|
|
155
106
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
tagVariants
|
|
159
|
-
};
|
|
160
|
-
//# sourceMappingURL=tag.js.map
|
|
107
|
+
//#endregion
|
|
108
|
+
export { Tag, tagVariants };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/testimonial-block.d.ts
|
|
5
|
+
declare const testimonialBlockVariants: (props?: ({
|
|
6
|
+
tone?: "brand" | "neutral" | null | undefined;
|
|
7
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
8
|
+
size?: "lg" | "md" | "sm" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
10
|
+
type TestimonialBlockProps = useRender.ComponentProps<"article"> & VariantProps<typeof testimonialBlockVariants>;
|
|
11
|
+
declare function TestimonialBlock({ className, orientation, render, size, tone, ...props }: TestimonialBlockProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
12
|
+
declare function TestimonialBlockContent({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
13
|
+
declare function TestimonialBlockMedia({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
14
|
+
declare function TestimonialBlockPlayButton({ "aria-label": ariaLabel, children, className, render, ...props }: useRender.ComponentProps<"button">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
15
|
+
type TestimonialBlockRatingProps = Omit<useRender.ComponentProps<"div">, "children"> & {
|
|
16
|
+
rating: number;
|
|
17
|
+
source?: React.ReactNode;
|
|
18
|
+
totalReviews?: number;
|
|
19
|
+
reviewLabel?: string;
|
|
20
|
+
showScore?: boolean;
|
|
21
|
+
};
|
|
22
|
+
declare function TestimonialBlockRating({ className, rating, render, reviewLabel, showScore, source, totalReviews, ...props }: TestimonialBlockRatingProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
23
|
+
declare function TestimonialBlockQuote({ className, render, ...props }: useRender.ComponentProps<"blockquote">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
24
|
+
declare function TestimonialBlockFooter({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
25
|
+
type TestimonialBlockReviewerProps = Omit<useRender.ComponentProps<"div">, "children"> & {
|
|
26
|
+
name: string;
|
|
27
|
+
photo?: string;
|
|
28
|
+
reviewerRole?: React.ReactNode;
|
|
29
|
+
};
|
|
30
|
+
declare function TestimonialBlockReviewer({ className, name, photo, render, reviewerRole, ...props }: TestimonialBlockReviewerProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
31
|
+
declare function TestimonialBlockAction({ "aria-label": ariaLabel, children, className, render, ...props }: useRender.ComponentProps<"a">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
|
|
32
|
+
//#endregion
|
|
33
|
+
export { TestimonialBlock, TestimonialBlockAction, TestimonialBlockContent, TestimonialBlockFooter, TestimonialBlockMedia, TestimonialBlockPlayButton, type TestimonialBlockProps, TestimonialBlockQuote, TestimonialBlockRating, TestimonialBlockReviewer, type TestimonialBlockReviewerProps, testimonialBlockVariants };
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
2
|
+
import { Avatar, AvatarFallback, AvatarImage } from "./avatar.js";
|
|
3
|
+
import { buttonVariants } from "./button.js";
|
|
4
|
+
import { ArrowUpRight, Play, Star } from "lucide-react";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
7
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
8
|
+
import { cva } from "class-variance-authority";
|
|
9
|
+
//#region src/testimonial-block.tsx
|
|
10
|
+
const STAR_INDEXES = [
|
|
11
|
+
0,
|
|
12
|
+
1,
|
|
13
|
+
2,
|
|
14
|
+
3,
|
|
15
|
+
4
|
|
16
|
+
];
|
|
17
|
+
const testimonialBlockVariants = cva("group/testimonial-block relative flex w-full min-w-0 overflow-hidden rounded-xl text-fg-primary shadow-1 transition-[background-color,border-color,box-shadow,transform]", {
|
|
18
|
+
variants: {
|
|
19
|
+
tone: {
|
|
20
|
+
neutral: "border border-line-subtle bg-surface hover:bg-surface-raised hover:shadow-2 active:bg-surface-raised active:shadow-none",
|
|
21
|
+
brand: "border border-transparent bg-surface-brand text-fg-on-brand hover:bg-action-primary-hover hover:shadow-2 active:bg-action-primary-pressed active:shadow-none"
|
|
22
|
+
},
|
|
23
|
+
orientation: {
|
|
24
|
+
vertical: "flex-col",
|
|
25
|
+
horizontal: "flex-row"
|
|
26
|
+
},
|
|
27
|
+
size: {
|
|
28
|
+
sm: "gap-3.5 p-5",
|
|
29
|
+
md: "gap-4 p-7",
|
|
30
|
+
lg: "gap-5 p-8.5 rounded-2xl"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
defaultVariants: {
|
|
34
|
+
orientation: "vertical",
|
|
35
|
+
size: "md",
|
|
36
|
+
tone: "neutral"
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
function TestimonialBlock({ className, orientation = "vertical", render, size = "md", tone = "neutral", ...props }) {
|
|
40
|
+
return useRender({
|
|
41
|
+
defaultTagName: "article",
|
|
42
|
+
props: mergeProps({ className: cn(testimonialBlockVariants({
|
|
43
|
+
orientation,
|
|
44
|
+
size,
|
|
45
|
+
tone
|
|
46
|
+
}), className) }, props),
|
|
47
|
+
render,
|
|
48
|
+
state: {
|
|
49
|
+
orientation,
|
|
50
|
+
size,
|
|
51
|
+
slot: "testimonial-block",
|
|
52
|
+
tone
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function TestimonialBlockContent({ className, render, ...props }) {
|
|
57
|
+
return useRender({
|
|
58
|
+
defaultTagName: "div",
|
|
59
|
+
props: mergeProps({ className: cn("flex min-w-0 flex-1 flex-col gap-gdt-md group-data-[size=lg]/testimonial-block:gap-gdt-lg", className) }, props),
|
|
60
|
+
render,
|
|
61
|
+
state: { slot: "testimonial-block-content" }
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function TestimonialBlockMedia({ className, render, ...props }) {
|
|
65
|
+
return useRender({
|
|
66
|
+
defaultTagName: "div",
|
|
67
|
+
props: mergeProps({ className: cn("relative isolate flex min-w-0 items-center justify-center overflow-hidden rounded-2xl bg-surface-raised", "min-h-32 group-data-[size=sm]/testimonial-block:min-h-28 group-data-[size=lg]/testimonial-block:min-h-44", "group-data-[orientation=horizontal]/testimonial-block:w-2/5 group-data-[orientation=horizontal]/testimonial-block:shrink-0", "[&>img]:absolute [&>img]:inset-0 [&>img]:size-full [&>img]:object-cover", className) }, props),
|
|
68
|
+
render,
|
|
69
|
+
state: { slot: "testimonial-block-media" }
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function TestimonialBlockPlayButton({ "aria-label": ariaLabel = "Play testimonial", children, className, render, ...props }) {
|
|
73
|
+
return useRender({
|
|
74
|
+
defaultTagName: "button",
|
|
75
|
+
props: mergeProps({
|
|
76
|
+
"aria-label": ariaLabel,
|
|
77
|
+
children: children ?? /* @__PURE__ */ jsx(Play, {
|
|
78
|
+
"aria-hidden": "true",
|
|
79
|
+
fill: "currentColor"
|
|
80
|
+
}),
|
|
81
|
+
className: cn(buttonVariants({
|
|
82
|
+
variant: "glass-overlay",
|
|
83
|
+
size: "icon-lg"
|
|
84
|
+
}), "size-12 group-data-[size=lg]/testimonial-block:size-14", "[&>svg]:ml-0.5 [&>svg]:size-5 group-data-[size=lg]/testimonial-block:[&>svg]:size-6", className)
|
|
85
|
+
}, props),
|
|
86
|
+
render,
|
|
87
|
+
state: { slot: "testimonial-block-play-button" }
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
function clampRating(rating) {
|
|
91
|
+
return Math.min(5, Math.max(0, rating));
|
|
92
|
+
}
|
|
93
|
+
function getInitials(name) {
|
|
94
|
+
return name.trim().split(/\s+/).slice(0, 2).map((part) => part[0]?.toUpperCase()).join("");
|
|
95
|
+
}
|
|
96
|
+
function formatRating(rating) {
|
|
97
|
+
return clampRating(rating).toFixed(1);
|
|
98
|
+
}
|
|
99
|
+
function formatReviewSource({ reviewLabel, source, totalReviews }) {
|
|
100
|
+
const label = reviewLabel ?? (totalReviews === 1 ? "review" : "reviews");
|
|
101
|
+
if (source && typeof totalReviews === "number") return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
102
|
+
totalReviews.toLocaleString(),
|
|
103
|
+
" ",
|
|
104
|
+
source,
|
|
105
|
+
" ",
|
|
106
|
+
label
|
|
107
|
+
] });
|
|
108
|
+
if (source) return source;
|
|
109
|
+
if (typeof totalReviews === "number") return `${totalReviews.toLocaleString()} ${label}`;
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
function TestimonialBlockRating({ className, rating, render, reviewLabel, showScore = true, source, totalReviews, ...props }) {
|
|
113
|
+
const formattedRating = formatRating(rating);
|
|
114
|
+
const roundedRating = Math.round(clampRating(rating));
|
|
115
|
+
const reviewSource = formatReviewSource({
|
|
116
|
+
reviewLabel,
|
|
117
|
+
source,
|
|
118
|
+
totalReviews
|
|
119
|
+
});
|
|
120
|
+
return useRender({
|
|
121
|
+
defaultTagName: "div",
|
|
122
|
+
props: mergeProps({
|
|
123
|
+
className: cn("flex min-w-0 flex-wrap items-center gap-gdt-sm text-fg-primary group-data-[tone=brand]/testimonial-block:text-fg-on-brand", className),
|
|
124
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
125
|
+
showScore ? /* @__PURE__ */ jsx("span", {
|
|
126
|
+
className: "font-bold text-gdt-lg group-data-[size=md]/testimonial-block:text-gdt-xl group-data-[size=lg]/testimonial-block:text-gdt-h5",
|
|
127
|
+
children: formattedRating
|
|
128
|
+
}) : null,
|
|
129
|
+
/* @__PURE__ */ jsx("span", {
|
|
130
|
+
className: cn("inline-flex shrink-0 items-center gap-0.5 text-surface-accent group-data-[tone=brand]/testimonial-block:text-fg-on-brand", "[&>svg]:size-4.5 group-data-[size=md]/testimonial-block:[&>svg]:size-5 group-data-[size=lg]/testimonial-block:[&>svg]:size-6"),
|
|
131
|
+
children: STAR_INDEXES.map((index) => /* @__PURE__ */ jsx(Star, {
|
|
132
|
+
"aria-hidden": "true",
|
|
133
|
+
fill: index < roundedRating ? "currentColor" : "none"
|
|
134
|
+
}, index))
|
|
135
|
+
}),
|
|
136
|
+
reviewSource ? /* @__PURE__ */ jsx("span", {
|
|
137
|
+
className: "text-gdt-xs text-fg-secondary group-data-[size=md]/testimonial-block:text-gdt-sm group-data-[size=lg]/testimonial-block:text-gdt-md group-data-[tone=brand]/testimonial-block:text-fg-on-brand",
|
|
138
|
+
children: reviewSource
|
|
139
|
+
}) : null
|
|
140
|
+
] })
|
|
141
|
+
}, props),
|
|
142
|
+
render,
|
|
143
|
+
state: {
|
|
144
|
+
rating: formattedRating,
|
|
145
|
+
slot: "testimonial-block-rating"
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function TestimonialBlockQuote({ className, render, ...props }) {
|
|
150
|
+
return useRender({
|
|
151
|
+
defaultTagName: "blockquote",
|
|
152
|
+
props: mergeProps({ className: cn("text-gdt-sm text-fg-primary group-data-[size=md]/testimonial-block:text-gdt-md group-data-[size=lg]/testimonial-block:text-gdt-lg", "group-data-[tone=brand]/testimonial-block:text-fg-on-brand", className) }, props),
|
|
153
|
+
render,
|
|
154
|
+
state: { slot: "testimonial-block-quote" }
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function TestimonialBlockFooter({ className, render, ...props }) {
|
|
158
|
+
return useRender({
|
|
159
|
+
defaultTagName: "div",
|
|
160
|
+
props: mergeProps({ className: cn("mt-auto flex min-w-0 items-center gap-gdt-md", className) }, props),
|
|
161
|
+
render,
|
|
162
|
+
state: { slot: "testimonial-block-footer" }
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
function TestimonialBlockReviewer({ className, name, photo, render, reviewerRole, ...props }) {
|
|
166
|
+
return useRender({
|
|
167
|
+
defaultTagName: "div",
|
|
168
|
+
props: mergeProps({
|
|
169
|
+
className: cn("flex min-w-0 flex-1 items-center gap-gdt-sm", className),
|
|
170
|
+
children: /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Avatar, {
|
|
171
|
+
size: "md",
|
|
172
|
+
className: cn("size-10 border border-line-subtle bg-canvas", "group-data-[size=sm]/testimonial-block:size-8 group-data-[size=lg]/testimonial-block:size-12", "group-data-[tone=brand]/testimonial-block:border-transparent"),
|
|
173
|
+
children: [photo ? /* @__PURE__ */ jsx(AvatarImage, {
|
|
174
|
+
alt: name,
|
|
175
|
+
src: photo
|
|
176
|
+
}) : null, /* @__PURE__ */ jsx(AvatarFallback, {
|
|
177
|
+
className: cn("bg-canvas text-fg-secondary", "group-data-[tone=brand]/testimonial-block:bg-canvas group-data-[tone=brand]/testimonial-block:text-fg-secondary"),
|
|
178
|
+
children: getInitials(name)
|
|
179
|
+
})]
|
|
180
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
181
|
+
className: "min-w-0",
|
|
182
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
183
|
+
className: "block truncate font-bold text-gdt-sm text-fg-primary group-data-[size=md]/testimonial-block:text-gdt-md group-data-[size=lg]/testimonial-block:text-gdt-lg group-data-[tone=brand]/testimonial-block:text-fg-on-brand",
|
|
184
|
+
children: name
|
|
185
|
+
}), reviewerRole ? /* @__PURE__ */ jsx("span", {
|
|
186
|
+
className: "block truncate text-gdt-xs text-fg-secondary group-data-[size=md]/testimonial-block:text-gdt-sm group-data-[size=lg]/testimonial-block:text-gdt-md group-data-[tone=brand]/testimonial-block:text-fg-on-brand/85",
|
|
187
|
+
children: reviewerRole
|
|
188
|
+
}) : null]
|
|
189
|
+
})] })
|
|
190
|
+
}, props),
|
|
191
|
+
render,
|
|
192
|
+
state: { slot: "testimonial-block-reviewer" }
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
function TestimonialBlockAction({ "aria-label": ariaLabel = "Open review", children, className, render, ...props }) {
|
|
196
|
+
return useRender({
|
|
197
|
+
defaultTagName: "a",
|
|
198
|
+
props: mergeProps({
|
|
199
|
+
"aria-label": ariaLabel,
|
|
200
|
+
children: children ?? /* @__PURE__ */ jsx(ArrowUpRight, { "aria-hidden": "true" }),
|
|
201
|
+
className: cn("inline-flex shrink-0 items-center justify-center rounded-full bg-action-primary text-fg-on-brand transition-[background-color,box-shadow,transform]", "size-10 hover:bg-action-primary-hover active:scale-95 active:bg-action-primary-pressed", "group-data-[size=md]/testimonial-block:size-12 group-data-[size=lg]/testimonial-block:size-14", "group-data-[tone=brand]/testimonial-block:bg-canvas group-data-[tone=brand]/testimonial-block:text-fg-brand group-data-[tone=brand]/testimonial-block:hover:bg-surface", "focus-visible:outline-none focus-visible:shadow-[0px_0px_0px_2px_var(--color-line-focus)]", "[&>svg]:size-5", className)
|
|
202
|
+
}, props),
|
|
203
|
+
render,
|
|
204
|
+
state: { slot: "testimonial-block-action" }
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
//#endregion
|
|
208
|
+
export { TestimonialBlock, TestimonialBlockAction, TestimonialBlockContent, TestimonialBlockFooter, TestimonialBlockMedia, TestimonialBlockPlayButton, TestimonialBlockQuote, TestimonialBlockRating, TestimonialBlockReviewer, testimonialBlockVariants };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { VariantProps } from "class-variance-authority";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
//#region src/textarea.d.ts
|
|
4
|
+
declare const textareaVariants: (props?: ({
|
|
5
|
+
size?: "lg" | "md" | "sm" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
type TextareaProps = Omit<React.ComponentProps<"textarea">, "size"> & VariantProps<typeof textareaVariants>;
|
|
8
|
+
type TextareaSize = NonNullable<VariantProps<typeof textareaVariants>["size"]>;
|
|
9
|
+
declare function Textarea({ className, size, ...props }: TextareaProps): React.JSX.Element;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { TextareaSize as n, textareaVariants as r, Textarea as t };
|
package/dist/textarea.d.ts
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
|
|
5
|
-
declare const textareaVariants: (props?: ({
|
|
6
|
-
size?: "sm" | "md" | "lg" | null | undefined;
|
|
7
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
|
-
type TextareaProps = Omit<React.ComponentProps<"textarea">, "size"> & VariantProps<typeof textareaVariants>;
|
|
9
|
-
type TextareaSize = NonNullable<VariantProps<typeof textareaVariants>["size"]>;
|
|
10
|
-
declare function Textarea({ className, size, ...props }: TextareaProps): React.JSX.Element;
|
|
11
|
-
|
|
12
|
-
export { Textarea, type TextareaSize, textareaVariants };
|
|
1
|
+
import { n as TextareaSize, r as textareaVariants, t as Textarea } from "./textarea-IS_D8pXf.js";
|
|
2
|
+
export { Textarea, type TextareaSize, textareaVariants };
|
package/dist/textarea.js
CHANGED
|
@@ -1,78 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
import { t as cn } from "./cn-BI_4DMBf.js";
|
|
2
|
+
import { useComponentSize } from "./size-context.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
4
|
import { cva } from "class-variance-authority";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
{
|
|
12
|
-
text: [
|
|
13
|
-
"gdt-display",
|
|
14
|
-
"gdt-h1",
|
|
15
|
-
"gdt-h2",
|
|
16
|
-
"gdt-h3",
|
|
17
|
-
"gdt-h4",
|
|
18
|
-
"gdt-h5",
|
|
19
|
-
"gdt-xl",
|
|
20
|
-
"gdt-lg",
|
|
21
|
-
"gdt-md",
|
|
22
|
-
"gdt-sm",
|
|
23
|
-
"gdt-xs",
|
|
24
|
-
"gdt-subtext",
|
|
25
|
-
"gdt-capitalized"
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
}
|
|
5
|
+
//#region src/textarea.tsx
|
|
6
|
+
const textareaVariants = cva("flex field-sizing-content w-full min-w-0 resize-y rounded-xl border border-line bg-canvas text-fg-primary transition-[background-color,border-color,box-shadow,color] outline-none placeholder:text-fg-caption-placeholder hover:border-line-strong focus-visible:border-line-focus focus-visible:inset-ring-1 inset-ring-line-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:border-line-subtle disabled:bg-surface disabled:text-fg-caption-placeholder disabled:placeholder:text-fg-caption-placeholder aria-invalid:border-line-danger aria-invalid:text-fg-danger aria-invalid:placeholder:text-fg-danger aria-invalid:shadow-none", {
|
|
7
|
+
variants: { size: {
|
|
8
|
+
sm: "min-h-22 px-3 py-2 text-gdt-xs",
|
|
9
|
+
md: "min-h-26 px-3.5 py-2.5 text-gdt-sm",
|
|
10
|
+
lg: "min-h-31 px-4 py-3 text-gdt-md"
|
|
11
|
+
} },
|
|
12
|
+
defaultVariants: { size: "md" }
|
|
31
13
|
});
|
|
32
|
-
function cn(...inputs) {
|
|
33
|
-
return twMerge(clsx(inputs));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// src/components/ui/size-context.tsx
|
|
37
|
-
import { createContext, useContext } from "react";
|
|
38
|
-
import { Fragment, jsx } from "react/jsx-runtime";
|
|
39
|
-
var SizeContext = createContext(void 0);
|
|
40
|
-
function useComponentSize(size, fallback = "md") {
|
|
41
|
-
const inheritedSize = useContext(SizeContext);
|
|
42
|
-
return size ?? inheritedSize ?? fallback;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// src/components/ui/textarea.tsx
|
|
46
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
47
|
-
var textareaVariants = cva(
|
|
48
|
-
"flex field-sizing-content w-full min-w-0 resize-y rounded-xl border border-line bg-canvas text-fg-primary transition-[background-color,border-color,box-shadow,color] outline-none placeholder:text-fg-caption-placeholder hover:border-line-strong focus-visible:border-line-focus focus-visible:inset-ring-1 inset-ring-line-focus disabled:pointer-events-none disabled:cursor-not-allowed disabled:border-line-subtle disabled:bg-surface disabled:text-fg-caption-placeholder disabled:placeholder:text-fg-caption-placeholder aria-invalid:border-line-danger aria-invalid:text-fg-danger aria-invalid:placeholder:text-fg-danger aria-invalid:shadow-none",
|
|
49
|
-
{
|
|
50
|
-
variants: {
|
|
51
|
-
size: {
|
|
52
|
-
sm: "min-h-22 px-3 py-2 text-gdt-xs",
|
|
53
|
-
md: "min-h-26 px-3.5 py-2.5 text-gdt-sm",
|
|
54
|
-
lg: "min-h-31 px-4 py-3 text-gdt-md"
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
defaultVariants: {
|
|
58
|
-
size: "md"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
);
|
|
62
14
|
function Textarea({ className, size, ...props }) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
...props
|
|
71
|
-
}
|
|
72
|
-
);
|
|
15
|
+
const resolvedSize = useComponentSize(size);
|
|
16
|
+
return /* @__PURE__ */ jsx("textarea", {
|
|
17
|
+
"data-slot": "textarea",
|
|
18
|
+
"data-size": resolvedSize,
|
|
19
|
+
className: cn(textareaVariants({ size: resolvedSize }), className),
|
|
20
|
+
...props
|
|
21
|
+
});
|
|
73
22
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
textareaVariants
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=textarea.js.map
|
|
23
|
+
//#endregion
|
|
24
|
+
export { Textarea, textareaVariants };
|
package/dist/time-picker.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import * as React from
|
|
2
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/time-picker.d.ts
|
|
3
3
|
interface TimePickerProps {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
value?: string;
|
|
5
|
+
onChange?: (time: string | undefined) => void;
|
|
6
|
+
format?: "12h" | "24h";
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
className?: string;
|
|
10
10
|
}
|
|
11
|
-
declare function TimePicker({ value, onChange, format, disabled, placeholder, className
|
|
12
|
-
|
|
13
|
-
export { TimePicker, type TimePickerProps };
|
|
11
|
+
declare function TimePicker({ value, onChange, format, disabled, placeholder, className }: TimePickerProps): React.JSX.Element;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { TimePicker, type TimePickerProps };
|