@dododog/ui 0.7.0 → 0.8.1

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.
@@ -89,20 +89,20 @@ function formatPrice(price) {
89
89
  }
90
90
  function CancellationChip({ cancellation }) {
91
91
  if (cancellation.kind === "free") {
92
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs font-medium text-emerald-700", children: [
93
- /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
94
- cancellation.label
92
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-start gap-1.5 text-xs font-medium text-emerald-700", children: [
93
+ /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "w-3.5 h-3.5 mt-[3px] flex-shrink-0" }),
94
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: cancellation.label })
95
95
  ] });
96
96
  }
97
97
  if (cancellation.kind === "partial") {
98
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs font-medium text-amber-700", children: [
99
- /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
100
- cancellation.label
98
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-start gap-1.5 text-xs font-medium text-amber-700", children: [
99
+ /* @__PURE__ */ jsxRuntime.jsx(CheckIcon, { className: "w-3.5 h-3.5 mt-[3px] flex-shrink-0" }),
100
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: cancellation.label })
101
101
  ] });
102
102
  }
103
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-text-muted", children: [
104
- /* @__PURE__ */ jsxRuntime.jsx(NoRefundIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
105
- cancellation.label
103
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-start gap-1.5 text-xs text-text-muted", children: [
104
+ /* @__PURE__ */ jsxRuntime.jsx(NoRefundIcon, { className: "w-3.5 h-3.5 mt-[3px] flex-shrink-0" }),
105
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: cancellation.label })
106
106
  ] });
107
107
  }
108
108
  function RateRow({
@@ -120,44 +120,48 @@ function RateRow({
120
120
  "div",
121
121
  {
122
122
  className: chunkADIDI7AJ_js.cn(
123
- "flex items-end justify-between gap-3 py-3",
123
+ "py-3",
124
124
  withTopBorder && "border-t border-dashed border-sand-dark"
125
125
  ),
126
126
  children: [
127
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
127
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
128
128
  rate.mealLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[13px] font-medium text-primary", children: rate.mealLabel }),
129
129
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(CancellationChip, { cancellation: rate.cancellation }) }),
130
- rate.dogFeeLabel && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 inline-flex items-center gap-1.5 text-xs font-medium text-secondary", children: [
131
- /* @__PURE__ */ jsxRuntime.jsx(DogIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
132
- rate.dogFeeLabel
130
+ rate.dogFeeLabel && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1 inline-flex items-start gap-1.5 text-xs font-medium text-secondary", children: [
131
+ /* @__PURE__ */ jsxRuntime.jsx(DogIcon, { className: "w-3.5 h-3.5 mt-[1px] flex-shrink-0" }),
132
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: rate.dogFeeLabel })
133
133
  ] })
134
134
  ] }),
135
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-right flex-shrink-0", children: [
136
- rate.originalTotal && rate.originalTotal > rate.totalPrice && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] text-text-muted line-through leading-none", children: formatPrice(rate.originalTotal) }),
137
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-heading text-lg font-bold text-primary leading-tight", children: formatPrice(rate.totalPrice) }),
138
- rate.totalLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] text-text-muted", children: rate.totalLabel }),
139
- showReserveCta ? /* @__PURE__ */ jsxRuntime.jsx(
140
- "button",
141
- {
142
- type: "button",
143
- onClick: () => onReserve?.(rate.id),
144
- className: "mt-1.5 text-[13px] font-semibold px-5 py-1.5 rounded-full bg-secondary text-white transition-colors hover:bg-secondary-dark focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-1",
145
- children: reserveLabel
146
- }
147
- ) : /* @__PURE__ */ jsxRuntime.jsx(
148
- "button",
149
- {
150
- type: "button",
151
- onClick: () => onSelect?.(rate.id),
152
- "aria-pressed": selected,
153
- className: chunkADIDI7AJ_js.cn(
154
- "mt-1.5 text-[13px] font-medium px-4 py-1.5 rounded-full transition-colors",
155
- selected ? "bg-secondary text-white" : "border border-secondary text-secondary hover:bg-secondary hover:text-white"
156
- ),
157
- children: selected ? "S\xE9lectionn\xE9" : selectLabel
158
- }
159
- ),
160
- showReserveCta && ctaNote && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-[11px] leading-tight text-text-muted", children: ctaNote })
135
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2.5 flex items-end justify-between gap-3", children: [
136
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
137
+ rate.originalTotal && rate.originalTotal > rate.totalPrice && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-[11px] text-text-muted line-through leading-none", children: formatPrice(rate.originalTotal) }),
138
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "font-heading text-lg font-bold text-primary leading-tight", children: formatPrice(rate.totalPrice) }),
139
+ rate.totalLabel && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-0.5 text-[11px] leading-snug text-text-muted", children: rate.totalLabel })
140
+ ] }),
141
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 flex-col items-end", children: [
142
+ showReserveCta ? /* @__PURE__ */ jsxRuntime.jsx(
143
+ "button",
144
+ {
145
+ type: "button",
146
+ onClick: () => onReserve?.(rate.id),
147
+ className: "text-[13px] font-semibold px-5 py-1.5 rounded-full bg-secondary text-white transition-colors hover:bg-secondary-dark focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-1",
148
+ children: reserveLabel
149
+ }
150
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
151
+ "button",
152
+ {
153
+ type: "button",
154
+ onClick: () => onSelect?.(rate.id),
155
+ "aria-pressed": selected,
156
+ className: chunkADIDI7AJ_js.cn(
157
+ "text-[13px] font-medium px-4 py-1.5 rounded-full transition-colors",
158
+ selected ? "bg-secondary text-white" : "border border-secondary text-secondary hover:bg-secondary hover:text-white"
159
+ ),
160
+ children: selected ? "S\xE9lectionn\xE9" : selectLabel
161
+ }
162
+ ),
163
+ showReserveCta && ctaNote && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 max-w-[10rem] text-right text-[11px] leading-tight text-text-muted", children: ctaNote })
164
+ ] })
161
165
  ] })
162
166
  ]
163
167
  }
@@ -67,20 +67,20 @@ function formatPrice(price) {
67
67
  }
68
68
  function CancellationChip({ cancellation }) {
69
69
  if (cancellation.kind === "free") {
70
- return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs font-medium text-emerald-700", children: [
71
- /* @__PURE__ */ jsx(CheckIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
72
- cancellation.label
70
+ return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-start gap-1.5 text-xs font-medium text-emerald-700", children: [
71
+ /* @__PURE__ */ jsx(CheckIcon, { className: "w-3.5 h-3.5 mt-[3px] flex-shrink-0" }),
72
+ /* @__PURE__ */ jsx("span", { children: cancellation.label })
73
73
  ] });
74
74
  }
75
75
  if (cancellation.kind === "partial") {
76
- return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs font-medium text-amber-700", children: [
77
- /* @__PURE__ */ jsx(CheckIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
78
- cancellation.label
76
+ return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-start gap-1.5 text-xs font-medium text-amber-700", children: [
77
+ /* @__PURE__ */ jsx(CheckIcon, { className: "w-3.5 h-3.5 mt-[3px] flex-shrink-0" }),
78
+ /* @__PURE__ */ jsx("span", { children: cancellation.label })
79
79
  ] });
80
80
  }
81
- return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-text-muted", children: [
82
- /* @__PURE__ */ jsx(NoRefundIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
83
- cancellation.label
81
+ return /* @__PURE__ */ jsxs("span", { className: "inline-flex items-start gap-1.5 text-xs text-text-muted", children: [
82
+ /* @__PURE__ */ jsx(NoRefundIcon, { className: "w-3.5 h-3.5 mt-[3px] flex-shrink-0" }),
83
+ /* @__PURE__ */ jsx("span", { children: cancellation.label })
84
84
  ] });
85
85
  }
86
86
  function RateRow({
@@ -98,44 +98,48 @@ function RateRow({
98
98
  "div",
99
99
  {
100
100
  className: cn(
101
- "flex items-end justify-between gap-3 py-3",
101
+ "py-3",
102
102
  withTopBorder && "border-t border-dashed border-sand-dark"
103
103
  ),
104
104
  children: [
105
- /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
105
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
106
106
  rate.mealLabel && /* @__PURE__ */ jsx("div", { className: "text-[13px] font-medium text-primary", children: rate.mealLabel }),
107
107
  /* @__PURE__ */ jsx("div", { className: "mt-0.5", children: /* @__PURE__ */ jsx(CancellationChip, { cancellation: rate.cancellation }) }),
108
- rate.dogFeeLabel && /* @__PURE__ */ jsxs("div", { className: "mt-1 inline-flex items-center gap-1.5 text-xs font-medium text-secondary", children: [
109
- /* @__PURE__ */ jsx(DogIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }),
110
- rate.dogFeeLabel
108
+ rate.dogFeeLabel && /* @__PURE__ */ jsxs("div", { className: "mt-1 inline-flex items-start gap-1.5 text-xs font-medium text-secondary", children: [
109
+ /* @__PURE__ */ jsx(DogIcon, { className: "w-3.5 h-3.5 mt-[1px] flex-shrink-0" }),
110
+ /* @__PURE__ */ jsx("span", { children: rate.dogFeeLabel })
111
111
  ] })
112
112
  ] }),
113
- /* @__PURE__ */ jsxs("div", { className: "text-right flex-shrink-0", children: [
114
- rate.originalTotal && rate.originalTotal > rate.totalPrice && /* @__PURE__ */ jsx("div", { className: "text-[11px] text-text-muted line-through leading-none", children: formatPrice(rate.originalTotal) }),
115
- /* @__PURE__ */ jsx("div", { className: "font-heading text-lg font-bold text-primary leading-tight", children: formatPrice(rate.totalPrice) }),
116
- rate.totalLabel && /* @__PURE__ */ jsx("div", { className: "text-[11px] text-text-muted", children: rate.totalLabel }),
117
- showReserveCta ? /* @__PURE__ */ jsx(
118
- "button",
119
- {
120
- type: "button",
121
- onClick: () => onReserve?.(rate.id),
122
- className: "mt-1.5 text-[13px] font-semibold px-5 py-1.5 rounded-full bg-secondary text-white transition-colors hover:bg-secondary-dark focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-1",
123
- children: reserveLabel
124
- }
125
- ) : /* @__PURE__ */ jsx(
126
- "button",
127
- {
128
- type: "button",
129
- onClick: () => onSelect?.(rate.id),
130
- "aria-pressed": selected,
131
- className: cn(
132
- "mt-1.5 text-[13px] font-medium px-4 py-1.5 rounded-full transition-colors",
133
- selected ? "bg-secondary text-white" : "border border-secondary text-secondary hover:bg-secondary hover:text-white"
134
- ),
135
- children: selected ? "S\xE9lectionn\xE9" : selectLabel
136
- }
137
- ),
138
- showReserveCta && ctaNote && /* @__PURE__ */ jsx("div", { className: "mt-1 text-[11px] leading-tight text-text-muted", children: ctaNote })
113
+ /* @__PURE__ */ jsxs("div", { className: "mt-2.5 flex items-end justify-between gap-3", children: [
114
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
115
+ rate.originalTotal && rate.originalTotal > rate.totalPrice && /* @__PURE__ */ jsx("div", { className: "text-[11px] text-text-muted line-through leading-none", children: formatPrice(rate.originalTotal) }),
116
+ /* @__PURE__ */ jsx("div", { className: "font-heading text-lg font-bold text-primary leading-tight", children: formatPrice(rate.totalPrice) }),
117
+ rate.totalLabel && /* @__PURE__ */ jsx("div", { className: "mt-0.5 text-[11px] leading-snug text-text-muted", children: rate.totalLabel })
118
+ ] }),
119
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 flex-col items-end", children: [
120
+ showReserveCta ? /* @__PURE__ */ jsx(
121
+ "button",
122
+ {
123
+ type: "button",
124
+ onClick: () => onReserve?.(rate.id),
125
+ className: "text-[13px] font-semibold px-5 py-1.5 rounded-full bg-secondary text-white transition-colors hover:bg-secondary-dark focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-1",
126
+ children: reserveLabel
127
+ }
128
+ ) : /* @__PURE__ */ jsx(
129
+ "button",
130
+ {
131
+ type: "button",
132
+ onClick: () => onSelect?.(rate.id),
133
+ "aria-pressed": selected,
134
+ className: cn(
135
+ "text-[13px] font-medium px-4 py-1.5 rounded-full transition-colors",
136
+ selected ? "bg-secondary text-white" : "border border-secondary text-secondary hover:bg-secondary hover:text-white"
137
+ ),
138
+ children: selected ? "S\xE9lectionn\xE9" : selectLabel
139
+ }
140
+ ),
141
+ showReserveCta && ctaNote && /* @__PURE__ */ jsx("div", { className: "mt-1 max-w-[10rem] text-right text-[11px] leading-tight text-text-muted", children: ctaNote })
142
+ ] })
139
143
  ] })
140
144
  ]
141
145
  }
@@ -0,0 +1,143 @@
1
+ 'use strict';
2
+
3
+ var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
4
+ var React = require('react');
5
+ var classVarianceAuthority = require('class-variance-authority');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+
28
+ var signInCalloutVariants = classVarianceAuthority.cva(
29
+ "flex flex-col gap-4 rounded-2xl border p-5 sm:flex-row sm:items-center sm:gap-5 sm:p-6",
30
+ {
31
+ variants: {
32
+ variant: {
33
+ default: "border-primary/15 bg-sand-light",
34
+ subtle: "border-gray-200 bg-white",
35
+ highlight: "border-secondary/30 bg-secondary/5"
36
+ }
37
+ },
38
+ defaultVariants: {
39
+ variant: "default"
40
+ }
41
+ }
42
+ );
43
+ var ctaClasses = "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full bg-secondary px-6 py-3 text-sm font-semibold text-white shadow-md transition-all duration-200 hover:bg-secondary-dark hover:shadow-lg active:scale-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-2";
44
+ var DefaultIcon = /* @__PURE__ */ jsxRuntime.jsxs(
45
+ "svg",
46
+ {
47
+ xmlns: "http://www.w3.org/2000/svg",
48
+ width: "24",
49
+ height: "24",
50
+ viewBox: "0 0 24 24",
51
+ fill: "none",
52
+ stroke: "currentColor",
53
+ strokeWidth: "2",
54
+ strokeLinecap: "round",
55
+ strokeLinejoin: "round",
56
+ "aria-hidden": "true",
57
+ children: [
58
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M18 20a6 6 0 0 0-12 0" }),
59
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "10", r: "4" }),
60
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" })
61
+ ]
62
+ }
63
+ );
64
+ var CheckIcon = /* @__PURE__ */ jsxRuntime.jsx(
65
+ "svg",
66
+ {
67
+ xmlns: "http://www.w3.org/2000/svg",
68
+ width: "16",
69
+ height: "16",
70
+ viewBox: "0 0 24 24",
71
+ fill: "none",
72
+ stroke: "currentColor",
73
+ strokeWidth: "2.5",
74
+ strokeLinecap: "round",
75
+ strokeLinejoin: "round",
76
+ className: "mt-0.5 shrink-0 text-secondary",
77
+ "aria-hidden": "true",
78
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 6 9 17l-5-5" })
79
+ }
80
+ );
81
+ var SignInCallout = React__namespace.forwardRef(
82
+ ({
83
+ title,
84
+ description,
85
+ ctaLabel,
86
+ onSignIn,
87
+ href,
88
+ benefits,
89
+ icon,
90
+ variant = "default",
91
+ className,
92
+ ...props
93
+ }, ref) => {
94
+ return /* @__PURE__ */ jsxRuntime.jsxs(
95
+ "div",
96
+ {
97
+ ref,
98
+ className: chunkADIDI7AJ_js.cn(signInCalloutVariants({ variant }), className),
99
+ ...props,
100
+ children: [
101
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 items-start gap-4", children: [
102
+ /* @__PURE__ */ jsxRuntime.jsx(
103
+ "span",
104
+ {
105
+ className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-full bg-secondary/10 text-secondary",
106
+ "aria-hidden": "true",
107
+ children: icon ?? DefaultIcon
108
+ }
109
+ ),
110
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
111
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-semibold text-primary", children: title }),
112
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-sm text-gray-600", children: description }),
113
+ benefits && benefits.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-3 flex flex-col gap-1.5", children: benefits.map((benefit, index) => /* @__PURE__ */ jsxRuntime.jsxs(
114
+ "li",
115
+ {
116
+ className: "flex items-start gap-2 text-sm text-gray-700",
117
+ children: [
118
+ CheckIcon,
119
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: benefit })
120
+ ]
121
+ },
122
+ index
123
+ )) })
124
+ ] })
125
+ ] }),
126
+ href ? /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: chunkADIDI7AJ_js.cn(ctaClasses, "w-full sm:w-auto"), children: ctaLabel }) : /* @__PURE__ */ jsxRuntime.jsx(
127
+ "button",
128
+ {
129
+ type: "button",
130
+ onClick: onSignIn,
131
+ className: chunkADIDI7AJ_js.cn(ctaClasses, "w-full sm:w-auto"),
132
+ children: ctaLabel
133
+ }
134
+ )
135
+ ]
136
+ }
137
+ );
138
+ }
139
+ );
140
+ SignInCallout.displayName = "SignInCallout";
141
+
142
+ exports.SignInCallout = SignInCallout;
143
+ exports.signInCalloutVariants = signInCalloutVariants;
@@ -0,0 +1,120 @@
1
+ import { cn } from './chunk-IMKLN273.mjs';
2
+ import * as React from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var signInCalloutVariants = cva(
7
+ "flex flex-col gap-4 rounded-2xl border p-5 sm:flex-row sm:items-center sm:gap-5 sm:p-6",
8
+ {
9
+ variants: {
10
+ variant: {
11
+ default: "border-primary/15 bg-sand-light",
12
+ subtle: "border-gray-200 bg-white",
13
+ highlight: "border-secondary/30 bg-secondary/5"
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ variant: "default"
18
+ }
19
+ }
20
+ );
21
+ var ctaClasses = "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-full bg-secondary px-6 py-3 text-sm font-semibold text-white shadow-md transition-all duration-200 hover:bg-secondary-dark hover:shadow-lg active:scale-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-secondary focus-visible:ring-offset-2";
22
+ var DefaultIcon = /* @__PURE__ */ jsxs(
23
+ "svg",
24
+ {
25
+ xmlns: "http://www.w3.org/2000/svg",
26
+ width: "24",
27
+ height: "24",
28
+ viewBox: "0 0 24 24",
29
+ fill: "none",
30
+ stroke: "currentColor",
31
+ strokeWidth: "2",
32
+ strokeLinecap: "round",
33
+ strokeLinejoin: "round",
34
+ "aria-hidden": "true",
35
+ children: [
36
+ /* @__PURE__ */ jsx("path", { d: "M18 20a6 6 0 0 0-12 0" }),
37
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "10", r: "4" }),
38
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" })
39
+ ]
40
+ }
41
+ );
42
+ var CheckIcon = /* @__PURE__ */ jsx(
43
+ "svg",
44
+ {
45
+ xmlns: "http://www.w3.org/2000/svg",
46
+ width: "16",
47
+ height: "16",
48
+ viewBox: "0 0 24 24",
49
+ fill: "none",
50
+ stroke: "currentColor",
51
+ strokeWidth: "2.5",
52
+ strokeLinecap: "round",
53
+ strokeLinejoin: "round",
54
+ className: "mt-0.5 shrink-0 text-secondary",
55
+ "aria-hidden": "true",
56
+ children: /* @__PURE__ */ jsx("path", { d: "M20 6 9 17l-5-5" })
57
+ }
58
+ );
59
+ var SignInCallout = React.forwardRef(
60
+ ({
61
+ title,
62
+ description,
63
+ ctaLabel,
64
+ onSignIn,
65
+ href,
66
+ benefits,
67
+ icon,
68
+ variant = "default",
69
+ className,
70
+ ...props
71
+ }, ref) => {
72
+ return /* @__PURE__ */ jsxs(
73
+ "div",
74
+ {
75
+ ref,
76
+ className: cn(signInCalloutVariants({ variant }), className),
77
+ ...props,
78
+ children: [
79
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-start gap-4", children: [
80
+ /* @__PURE__ */ jsx(
81
+ "span",
82
+ {
83
+ className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-full bg-secondary/10 text-secondary",
84
+ "aria-hidden": "true",
85
+ children: icon ?? DefaultIcon
86
+ }
87
+ ),
88
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
89
+ /* @__PURE__ */ jsx("p", { className: "text-base font-semibold text-primary", children: title }),
90
+ /* @__PURE__ */ jsx("div", { className: "mt-1 text-sm text-gray-600", children: description }),
91
+ benefits && benefits.length > 0 && /* @__PURE__ */ jsx("ul", { className: "mt-3 flex flex-col gap-1.5", children: benefits.map((benefit, index) => /* @__PURE__ */ jsxs(
92
+ "li",
93
+ {
94
+ className: "flex items-start gap-2 text-sm text-gray-700",
95
+ children: [
96
+ CheckIcon,
97
+ /* @__PURE__ */ jsx("span", { children: benefit })
98
+ ]
99
+ },
100
+ index
101
+ )) })
102
+ ] })
103
+ ] }),
104
+ href ? /* @__PURE__ */ jsx("a", { href, className: cn(ctaClasses, "w-full sm:w-auto"), children: ctaLabel }) : /* @__PURE__ */ jsx(
105
+ "button",
106
+ {
107
+ type: "button",
108
+ onClick: onSignIn,
109
+ className: cn(ctaClasses, "w-full sm:w-auto"),
110
+ children: ctaLabel
111
+ }
112
+ )
113
+ ]
114
+ }
115
+ );
116
+ }
117
+ );
118
+ SignInCallout.displayName = "SignInCallout";
119
+
120
+ export { SignInCallout, signInCalloutVariants };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkS26SN3WK_js = require('../../chunk-S26SN3WK.js');
3
+ var chunk3JM2X4I2_js = require('../../chunk-3JM2X4I2.js');
4
4
  require('../../chunk-NCU5PY34.js');
5
5
  require('../../chunk-ADIDI7AJ.js');
6
6
 
@@ -8,9 +8,9 @@ require('../../chunk-ADIDI7AJ.js');
8
8
 
9
9
  Object.defineProperty(exports, "RoomTypeCard", {
10
10
  enumerable: true,
11
- get: function () { return chunkS26SN3WK_js.RoomTypeCard; }
11
+ get: function () { return chunk3JM2X4I2_js.RoomTypeCard; }
12
12
  });
13
13
  Object.defineProperty(exports, "RoomTypeCardSkeleton", {
14
14
  enumerable: true,
15
- get: function () { return chunkS26SN3WK_js.RoomTypeCardSkeleton; }
15
+ get: function () { return chunk3JM2X4I2_js.RoomTypeCardSkeleton; }
16
16
  });
@@ -1,3 +1,3 @@
1
- export { RoomTypeCard, RoomTypeCardSkeleton } from '../../chunk-QTW2FJUJ.mjs';
1
+ export { RoomTypeCard, RoomTypeCardSkeleton } from '../../chunk-BFGRWOQM.mjs';
2
2
  import '../../chunk-PAHSQMXV.mjs';
3
3
  import '../../chunk-IMKLN273.mjs';
@@ -0,0 +1,26 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import * as React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+
5
+ declare const signInCalloutVariants: (props?: ({
6
+ variant?: "default" | "subtle" | "highlight" | null | undefined;
7
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
8
+ interface SignInCalloutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof signInCalloutVariants> {
9
+ /** Titre de l'encart, ex. « Vous avez déjà un compte ? ». */
10
+ title: string;
11
+ /** Texte descriptif — chaîne ou contenu riche. */
12
+ description: React.ReactNode;
13
+ /** Libellé du bouton d'action, ex. « Se connecter ». */
14
+ ctaLabel: string;
15
+ /** Handler de clic sur le CTA (rendu comme <button>). Ignoré si `href` est fourni. */
16
+ onSignIn?: () => void;
17
+ /** Lien du CTA (rendu comme <a>). Prioritaire sur `onSignIn`. */
18
+ href?: string;
19
+ /** Liste facultative de bénéfices affichés sous la description. */
20
+ benefits?: string[];
21
+ /** Icône décorative personnalisée (par défaut : silhouette utilisateur). */
22
+ icon?: React.ReactNode;
23
+ }
24
+ declare const SignInCallout: React.ForwardRefExoticComponent<SignInCalloutProps & React.RefAttributes<HTMLDivElement>>;
25
+
26
+ export { SignInCallout, type SignInCalloutProps, signInCalloutVariants };
@@ -0,0 +1,26 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import * as React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+
5
+ declare const signInCalloutVariants: (props?: ({
6
+ variant?: "default" | "subtle" | "highlight" | null | undefined;
7
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
8
+ interface SignInCalloutProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof signInCalloutVariants> {
9
+ /** Titre de l'encart, ex. « Vous avez déjà un compte ? ». */
10
+ title: string;
11
+ /** Texte descriptif — chaîne ou contenu riche. */
12
+ description: React.ReactNode;
13
+ /** Libellé du bouton d'action, ex. « Se connecter ». */
14
+ ctaLabel: string;
15
+ /** Handler de clic sur le CTA (rendu comme <button>). Ignoré si `href` est fourni. */
16
+ onSignIn?: () => void;
17
+ /** Lien du CTA (rendu comme <a>). Prioritaire sur `onSignIn`. */
18
+ href?: string;
19
+ /** Liste facultative de bénéfices affichés sous la description. */
20
+ benefits?: string[];
21
+ /** Icône décorative personnalisée (par défaut : silhouette utilisateur). */
22
+ icon?: React.ReactNode;
23
+ }
24
+ declare const SignInCallout: React.ForwardRefExoticComponent<SignInCalloutProps & React.RefAttributes<HTMLDivElement>>;
25
+
26
+ export { SignInCallout, type SignInCalloutProps, signInCalloutVariants };
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var chunkWXSBKARZ_js = require('../../chunk-WXSBKARZ.js');
4
+ require('../../chunk-ADIDI7AJ.js');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "SignInCallout", {
9
+ enumerable: true,
10
+ get: function () { return chunkWXSBKARZ_js.SignInCallout; }
11
+ });
12
+ Object.defineProperty(exports, "signInCalloutVariants", {
13
+ enumerable: true,
14
+ get: function () { return chunkWXSBKARZ_js.signInCalloutVariants; }
15
+ });
@@ -0,0 +1,2 @@
1
+ export { SignInCallout, signInCalloutVariants } from '../../chunk-Z3KRMKHP.mjs';
2
+ import '../../chunk-IMKLN273.mjs';
package/dist/index.d.mts CHANGED
@@ -66,6 +66,7 @@ export { CardList, CardListProps } from './components/CardList/index.mjs';
66
66
  export { FilterAccordion, FilterAccordionItemData, FilterAccordionProps } from './components/FilterAccordion/index.mjs';
67
67
  export { RoomRate, RoomRateCancellation, RoomRateCancellationKind, RoomTypeCard, RoomTypeCardProps, RoomTypeCardSkeleton, RoomTypeCardSkeletonProps, RoomTypeData } from './components/RoomTypeCard/index.mjs';
68
68
  import * as react_jsx_runtime from 'react/jsx-runtime';
69
+ export { SignInCallout, SignInCalloutProps, signInCalloutVariants } from './components/SignInCallout/index.mjs';
69
70
  export { cn } from './utils/index.mjs';
70
71
  import 'clsx';
71
72
 
package/dist/index.d.ts CHANGED
@@ -66,6 +66,7 @@ export { CardList, CardListProps } from './components/CardList/index.js';
66
66
  export { FilterAccordion, FilterAccordionItemData, FilterAccordionProps } from './components/FilterAccordion/index.js';
67
67
  export { RoomRate, RoomRateCancellation, RoomRateCancellationKind, RoomTypeCard, RoomTypeCardProps, RoomTypeCardSkeleton, RoomTypeCardSkeletonProps, RoomTypeData } from './components/RoomTypeCard/index.js';
68
68
  import * as react_jsx_runtime from 'react/jsx-runtime';
69
+ export { SignInCallout, SignInCalloutProps, signInCalloutVariants } from './components/SignInCallout/index.js';
69
70
  export { cn } from './utils/index.js';
70
71
  import 'clsx';
71
72
 
package/dist/index.js CHANGED
@@ -1,69 +1,70 @@
1
1
  'use strict';
2
2
 
3
+ var chunkL7OYR6U3_js = require('./chunk-L7OYR6U3.js');
3
4
  var chunkVTELEOT7_js = require('./chunk-VTELEOT7.js');
4
- var chunkE6ZNND75_js = require('./chunk-E6ZNND75.js');
5
5
  var chunkDTIYZ3TQ_js = require('./chunk-DTIYZ3TQ.js');
6
6
  var chunkN3JU7JS7_js = require('./chunk-N3JU7JS7.js');
7
+ var chunkE6ZNND75_js = require('./chunk-E6ZNND75.js');
7
8
  var chunkXHRDPJTF_js = require('./chunk-XHRDPJTF.js');
8
9
  var chunkTT7L3ZU7_js = require('./chunk-TT7L3ZU7.js');
9
10
  var chunkDFXXGKMI_js = require('./chunk-DFXXGKMI.js');
11
+ var chunkDS4LM7OS_js = require('./chunk-DS4LM7OS.js');
10
12
  var chunk3VU6TPAT_js = require('./chunk-3VU6TPAT.js');
11
13
  var chunkI4S3R6C6_js = require('./chunk-I4S3R6C6.js');
12
14
  var chunk762LQMWP_js = require('./chunk-762LQMWP.js');
13
15
  var chunk7IJOHVNJ_js = require('./chunk-7IJOHVNJ.js');
14
- var chunkL7OYR6U3_js = require('./chunk-L7OYR6U3.js');
15
16
  var chunkGXKON34B_js = require('./chunk-GXKON34B.js');
16
17
  var chunkTZHT7NZU_js = require('./chunk-TZHT7NZU.js');
17
- var chunkS26SN3WK_js = require('./chunk-S26SN3WK.js');
18
+ var chunk3JM2X4I2_js = require('./chunk-3JM2X4I2.js');
18
19
  var chunkHS3MAW3G_js = require('./chunk-HS3MAW3G.js');
19
20
  var chunkQWDKSY6Y_js = require('./chunk-QWDKSY6Y.js');
20
21
  var chunk3R7PT3JG_js = require('./chunk-3R7PT3JG.js');
21
- var chunkDS4LM7OS_js = require('./chunk-DS4LM7OS.js');
22
+ var chunkWXSBKARZ_js = require('./chunk-WXSBKARZ.js');
22
23
  var chunkNCU5PY34_js = require('./chunk-NCU5PY34.js');
24
+ var chunkTE4WHZ4Q_js = require('./chunk-TE4WHZ4Q.js');
23
25
  var chunkHN6B4TAW_js = require('./chunk-HN6B4TAW.js');
24
- var chunkW7DZZS6L_js = require('./chunk-W7DZZS6L.js');
25
26
  var chunkKZSGVMUG_js = require('./chunk-KZSGVMUG.js');
26
- var chunkNBDPT3XQ_js = require('./chunk-NBDPT3XQ.js');
27
27
  var chunkSCGN5H6D_js = require('./chunk-SCGN5H6D.js');
28
+ var chunkNBDPT3XQ_js = require('./chunk-NBDPT3XQ.js');
28
29
  var chunkB4LR4H6R_js = require('./chunk-B4LR4H6R.js');
29
- var chunkPG4I4NWO_js = require('./chunk-PG4I4NWO.js');
30
30
  var chunkPRDIS2VR_js = require('./chunk-PRDIS2VR.js');
31
+ var chunkPG4I4NWO_js = require('./chunk-PG4I4NWO.js');
31
32
  var chunkIRKM5UF4_js = require('./chunk-IRKM5UF4.js');
32
33
  var chunkECVKFE6U_js = require('./chunk-ECVKFE6U.js');
33
34
  var chunkYN4HPIRC_js = require('./chunk-YN4HPIRC.js');
34
35
  var chunkMKOKWME3_js = require('./chunk-MKOKWME3.js');
35
36
  var chunkDLOHAW74_js = require('./chunk-DLOHAW74.js');
36
- var chunk77WKG2D7_js = require('./chunk-77WKG2D7.js');
37
37
  var chunkU3XWNFHH_js = require('./chunk-U3XWNFHH.js');
38
- var chunkTE4WHZ4Q_js = require('./chunk-TE4WHZ4Q.js');
38
+ var chunk77WKG2D7_js = require('./chunk-77WKG2D7.js');
39
+ var chunkW7DZZS6L_js = require('./chunk-W7DZZS6L.js');
39
40
  var chunkTDGU5Y2P_js = require('./chunk-TDGU5Y2P.js');
40
- var chunkIEHX4DU6_js = require('./chunk-IEHX4DU6.js');
41
41
  var chunkS5TLUDNM_js = require('./chunk-S5TLUDNM.js');
42
+ var chunkIEHX4DU6_js = require('./chunk-IEHX4DU6.js');
42
43
  var chunk7W3TFPIF_js = require('./chunk-7W3TFPIF.js');
43
- var chunkTJDHGNMR_js = require('./chunk-TJDHGNMR.js');
44
44
  var chunkS732LTPT_js = require('./chunk-S732LTPT.js');
45
+ var chunkTJDHGNMR_js = require('./chunk-TJDHGNMR.js');
45
46
  var chunkC4RZBOKH_js = require('./chunk-C4RZBOKH.js');
46
47
  var chunkKOO5ZXLD_js = require('./chunk-KOO5ZXLD.js');
47
48
  var chunkP7GAKOCX_js = require('./chunk-P7GAKOCX.js');
48
- var chunkT4AT3YCT_js = require('./chunk-T4AT3YCT.js');
49
49
  var chunkIJIUUBFT_js = require('./chunk-IJIUUBFT.js');
50
- var chunkE24VNM6S_js = require('./chunk-E24VNM6S.js');
50
+ var chunkT4AT3YCT_js = require('./chunk-T4AT3YCT.js');
51
51
  var chunkAIA3NHCK_js = require('./chunk-AIA3NHCK.js');
52
+ var chunkE24VNM6S_js = require('./chunk-E24VNM6S.js');
52
53
  var chunkXXC2YD3D_js = require('./chunk-XXC2YD3D.js');
53
54
  var chunkVWFY24XF_js = require('./chunk-VWFY24XF.js');
54
55
  var chunkT5FLQQP6_js = require('./chunk-T5FLQQP6.js');
55
- var chunkWBRVUWGC_js = require('./chunk-WBRVUWGC.js');
56
56
  var chunkNHB2TI2B_js = require('./chunk-NHB2TI2B.js');
57
- var chunkPND5YKFN_js = require('./chunk-PND5YKFN.js');
57
+ var chunkZ5S7LHMY_js = require('./chunk-Z5S7LHMY.js');
58
58
  var chunk6EG6EAHW_js = require('./chunk-6EG6EAHW.js');
59
- var chunkYZTVHCLK_js = require('./chunk-YZTVHCLK.js');
59
+ var chunkPND5YKFN_js = require('./chunk-PND5YKFN.js');
60
60
  var chunkH3JNRTAI_js = require('./chunk-H3JNRTAI.js');
61
+ var chunkYZTVHCLK_js = require('./chunk-YZTVHCLK.js');
61
62
  var chunkZAUYE2EI_js = require('./chunk-ZAUYE2EI.js');
62
63
  var chunkMY6BYO5F_js = require('./chunk-MY6BYO5F.js');
63
64
  var chunkMCF3EQTV_js = require('./chunk-MCF3EQTV.js');
65
+ var chunkWBRVUWGC_js = require('./chunk-WBRVUWGC.js');
64
66
  var chunkWXEZA6NE_js = require('./chunk-WXEZA6NE.js');
65
67
  var chunkEY4ZIR3P_js = require('./chunk-EY4ZIR3P.js');
66
- var chunkZ5S7LHMY_js = require('./chunk-Z5S7LHMY.js');
67
68
  var chunkADIDI7AJ_js = require('./chunk-ADIDI7AJ.js');
68
69
  var React = require('react');
69
70
  var classVarianceAuthority = require('class-variance-authority');
@@ -484,6 +485,14 @@ function MobileBookingBar({
484
485
  );
485
486
  }
486
487
 
488
+ Object.defineProperty(exports, "Textarea", {
489
+ enumerable: true,
490
+ get: function () { return chunkL7OYR6U3_js.Textarea; }
491
+ });
492
+ Object.defineProperty(exports, "textareaVariants", {
493
+ enumerable: true,
494
+ get: function () { return chunkL7OYR6U3_js.textareaVariants; }
495
+ });
487
496
  Object.defineProperty(exports, "Toast", {
488
497
  enumerable: true,
489
498
  get: function () { return chunkVTELEOT7_js.Toast; }
@@ -492,10 +501,6 @@ Object.defineProperty(exports, "toastVariants", {
492
501
  enumerable: true,
493
502
  get: function () { return chunkVTELEOT7_js.toastVariants; }
494
503
  });
495
- Object.defineProperty(exports, "Tooltip", {
496
- enumerable: true,
497
- get: function () { return chunkE6ZNND75_js.Tooltip; }
498
- });
499
504
  Object.defineProperty(exports, "Toggle", {
500
505
  enumerable: true,
501
506
  get: function () { return chunkDTIYZ3TQ_js.Toggle; }
@@ -504,6 +509,10 @@ Object.defineProperty(exports, "VerticalMarquee", {
504
509
  enumerable: true,
505
510
  get: function () { return chunkN3JU7JS7_js.VerticalMarquee; }
506
511
  });
512
+ Object.defineProperty(exports, "Tooltip", {
513
+ enumerable: true,
514
+ get: function () { return chunkE6ZNND75_js.Tooltip; }
515
+ });
507
516
  Object.defineProperty(exports, "Spinner", {
508
517
  enumerable: true,
509
518
  get: function () { return chunkXHRDPJTF_js.Spinner; }
@@ -524,6 +533,10 @@ Object.defineProperty(exports, "statusBadgeVariants", {
524
533
  enumerable: true,
525
534
  get: function () { return chunkDFXXGKMI_js.statusBadgeVariants; }
526
535
  });
536
+ Object.defineProperty(exports, "Sidebar", {
537
+ enumerable: true,
538
+ get: function () { return chunkDS4LM7OS_js.Sidebar; }
539
+ });
527
540
  Object.defineProperty(exports, "Stepper", {
528
541
  enumerable: true,
529
542
  get: function () { return chunk3VU6TPAT_js.Stepper; }
@@ -552,14 +565,6 @@ Object.defineProperty(exports, "tagVariants", {
552
565
  enumerable: true,
553
566
  get: function () { return chunk7IJOHVNJ_js.tagVariants; }
554
567
  });
555
- Object.defineProperty(exports, "Textarea", {
556
- enumerable: true,
557
- get: function () { return chunkL7OYR6U3_js.Textarea; }
558
- });
559
- Object.defineProperty(exports, "textareaVariants", {
560
- enumerable: true,
561
- get: function () { return chunkL7OYR6U3_js.textareaVariants; }
562
- });
563
568
  Object.defineProperty(exports, "RadioGroup", {
564
569
  enumerable: true,
565
570
  get: function () { return chunkGXKON34B_js.RadioGroup; }
@@ -570,11 +575,11 @@ Object.defineProperty(exports, "Rating", {
570
575
  });
571
576
  Object.defineProperty(exports, "RoomTypeCard", {
572
577
  enumerable: true,
573
- get: function () { return chunkS26SN3WK_js.RoomTypeCard; }
578
+ get: function () { return chunk3JM2X4I2_js.RoomTypeCard; }
574
579
  });
575
580
  Object.defineProperty(exports, "RoomTypeCardSkeleton", {
576
581
  enumerable: true,
577
- get: function () { return chunkS26SN3WK_js.RoomTypeCardSkeleton; }
582
+ get: function () { return chunk3JM2X4I2_js.RoomTypeCardSkeleton; }
578
583
  });
579
584
  Object.defineProperty(exports, "SearchBar", {
580
585
  enumerable: true,
@@ -592,9 +597,13 @@ Object.defineProperty(exports, "selectVariants", {
592
597
  enumerable: true,
593
598
  get: function () { return chunk3R7PT3JG_js.selectVariants; }
594
599
  });
595
- Object.defineProperty(exports, "Sidebar", {
600
+ Object.defineProperty(exports, "SignInCallout", {
596
601
  enumerable: true,
597
- get: function () { return chunkDS4LM7OS_js.Sidebar; }
602
+ get: function () { return chunkWXSBKARZ_js.SignInCallout; }
603
+ });
604
+ Object.defineProperty(exports, "signInCalloutVariants", {
605
+ enumerable: true,
606
+ get: function () { return chunkWXSBKARZ_js.signInCalloutVariants; }
598
607
  });
599
608
  Object.defineProperty(exports, "Skeleton", {
600
609
  enumerable: true,
@@ -612,30 +621,38 @@ Object.defineProperty(exports, "SkeletonText", {
612
621
  enumerable: true,
613
622
  get: function () { return chunkNCU5PY34_js.SkeletonText; }
614
623
  });
615
- Object.defineProperty(exports, "MegaMenu", {
624
+ Object.defineProperty(exports, "LoadingOverlay", {
616
625
  enumerable: true,
617
- get: function () { return chunkHN6B4TAW_js.MegaMenu; }
626
+ get: function () { return chunkTE4WHZ4Q_js.LoadingOverlay; }
618
627
  });
619
- Object.defineProperty(exports, "LinkCard", {
628
+ Object.defineProperty(exports, "MegaMenu", {
620
629
  enumerable: true,
621
- get: function () { return chunkW7DZZS6L_js.LinkCard; }
630
+ get: function () { return chunkHN6B4TAW_js.MegaMenu; }
622
631
  });
623
632
  Object.defineProperty(exports, "MobileMenu", {
624
633
  enumerable: true,
625
634
  get: function () { return chunkKZSGVMUG_js.MobileMenu; }
626
635
  });
627
- Object.defineProperty(exports, "Modal", {
628
- enumerable: true,
629
- get: function () { return chunkNBDPT3XQ_js.Modal; }
630
- });
631
636
  Object.defineProperty(exports, "Pagination", {
632
637
  enumerable: true,
633
638
  get: function () { return chunkSCGN5H6D_js.Pagination; }
634
639
  });
640
+ Object.defineProperty(exports, "Modal", {
641
+ enumerable: true,
642
+ get: function () { return chunkNBDPT3XQ_js.Modal; }
643
+ });
635
644
  Object.defineProperty(exports, "PriceDisplay", {
636
645
  enumerable: true,
637
646
  get: function () { return chunkB4LR4H6R_js.PriceDisplay; }
638
647
  });
648
+ Object.defineProperty(exports, "PromoBanner", {
649
+ enumerable: true,
650
+ get: function () { return chunkPRDIS2VR_js.PromoBanner; }
651
+ });
652
+ Object.defineProperty(exports, "promoBannerVariants", {
653
+ enumerable: true,
654
+ get: function () { return chunkPRDIS2VR_js.promoBannerVariants; }
655
+ });
639
656
  Object.defineProperty(exports, "ProgressBar", {
640
657
  enumerable: true,
641
658
  get: function () { return chunkPG4I4NWO_js.ProgressBar; }
@@ -648,14 +665,6 @@ Object.defineProperty(exports, "progressFillVariants", {
648
665
  enumerable: true,
649
666
  get: function () { return chunkPG4I4NWO_js.progressFillVariants; }
650
667
  });
651
- Object.defineProperty(exports, "PromoBanner", {
652
- enumerable: true,
653
- get: function () { return chunkPRDIS2VR_js.PromoBanner; }
654
- });
655
- Object.defineProperty(exports, "promoBannerVariants", {
656
- enumerable: true,
657
- get: function () { return chunkPRDIS2VR_js.promoBannerVariants; }
658
- });
659
668
  Object.defineProperty(exports, "Header", {
660
669
  enumerable: true,
661
670
  get: function () { return chunkIRKM5UF4_js.Header; }
@@ -680,6 +689,10 @@ Object.defineProperty(exports, "ImageWithFallback", {
680
689
  enumerable: true,
681
690
  get: function () { return chunkDLOHAW74_js.ImageWithFallback; }
682
691
  });
692
+ Object.defineProperty(exports, "Lightbox", {
693
+ enumerable: true,
694
+ get: function () { return chunkU3XWNFHH_js.Lightbox; }
695
+ });
683
696
  Object.defineProperty(exports, "Input", {
684
697
  enumerable: true,
685
698
  get: function () { return chunk77WKG2D7_js.Input; }
@@ -688,38 +701,34 @@ Object.defineProperty(exports, "inputVariants", {
688
701
  enumerable: true,
689
702
  get: function () { return chunk77WKG2D7_js.inputVariants; }
690
703
  });
691
- Object.defineProperty(exports, "Lightbox", {
692
- enumerable: true,
693
- get: function () { return chunkU3XWNFHH_js.Lightbox; }
694
- });
695
- Object.defineProperty(exports, "LoadingOverlay", {
704
+ Object.defineProperty(exports, "LinkCard", {
696
705
  enumerable: true,
697
- get: function () { return chunkTE4WHZ4Q_js.LoadingOverlay; }
706
+ get: function () { return chunkW7DZZS6L_js.LinkCard; }
698
707
  });
699
708
  Object.defineProperty(exports, "DualRangeSlider", {
700
709
  enumerable: true,
701
710
  get: function () { return chunkTDGU5Y2P_js.DualRangeSlider; }
702
711
  });
703
- Object.defineProperty(exports, "EmptyState", {
704
- enumerable: true,
705
- get: function () { return chunkIEHX4DU6_js.EmptyState; }
706
- });
707
712
  Object.defineProperty(exports, "ErrorBoundary", {
708
713
  enumerable: true,
709
714
  get: function () { return chunkS5TLUDNM_js.ErrorBoundary; }
710
715
  });
711
- Object.defineProperty(exports, "FilterAccordion", {
716
+ Object.defineProperty(exports, "EmptyState", {
712
717
  enumerable: true,
713
- get: function () { return chunk7W3TFPIF_js.FilterAccordion; }
718
+ get: function () { return chunkIEHX4DU6_js.EmptyState; }
714
719
  });
715
- Object.defineProperty(exports, "FilterPill", {
720
+ Object.defineProperty(exports, "FilterAccordion", {
716
721
  enumerable: true,
717
- get: function () { return chunkTJDHGNMR_js.FilterPill; }
722
+ get: function () { return chunk7W3TFPIF_js.FilterAccordion; }
718
723
  });
719
724
  Object.defineProperty(exports, "FloatingDock", {
720
725
  enumerable: true,
721
726
  get: function () { return chunkS732LTPT_js.FloatingDock; }
722
727
  });
728
+ Object.defineProperty(exports, "FilterPill", {
729
+ enumerable: true,
730
+ get: function () { return chunkTJDHGNMR_js.FilterPill; }
731
+ });
723
732
  Object.defineProperty(exports, "Footer", {
724
733
  enumerable: true,
725
734
  get: function () { return chunkC4RZBOKH_js.Footer; }
@@ -732,17 +741,13 @@ Object.defineProperty(exports, "Carousel", {
732
741
  enumerable: true,
733
742
  get: function () { return chunkP7GAKOCX_js.Carousel; }
734
743
  });
735
- Object.defineProperty(exports, "Counter", {
736
- enumerable: true,
737
- get: function () { return chunkT4AT3YCT_js.Counter; }
738
- });
739
744
  Object.defineProperty(exports, "Checkbox", {
740
745
  enumerable: true,
741
746
  get: function () { return chunkIJIUUBFT_js.Checkbox; }
742
747
  });
743
- Object.defineProperty(exports, "DetailList", {
748
+ Object.defineProperty(exports, "Counter", {
744
749
  enumerable: true,
745
- get: function () { return chunkE24VNM6S_js.DetailList; }
750
+ get: function () { return chunkT4AT3YCT_js.Counter; }
746
751
  });
747
752
  Object.defineProperty(exports, "DatePickerInput", {
748
753
  enumerable: true,
@@ -752,6 +757,10 @@ Object.defineProperty(exports, "DateRangePicker", {
752
757
  enumerable: true,
753
758
  get: function () { return chunkAIA3NHCK_js.DateRangePicker; }
754
759
  });
760
+ Object.defineProperty(exports, "DetailList", {
761
+ enumerable: true,
762
+ get: function () { return chunkE24VNM6S_js.DetailList; }
763
+ });
755
764
  Object.defineProperty(exports, "Divider", {
756
765
  enumerable: true,
757
766
  get: function () { return chunkXXC2YD3D_js.Divider; }
@@ -764,10 +773,6 @@ Object.defineProperty(exports, "DropdownMenu", {
764
773
  enumerable: true,
765
774
  get: function () { return chunkT5FLQQP6_js.DropdownMenu; }
766
775
  });
767
- Object.defineProperty(exports, "Alert", {
768
- enumerable: true,
769
- get: function () { return chunkWBRVUWGC_js.Alert; }
770
- });
771
776
  Object.defineProperty(exports, "Autocomplete", {
772
777
  enumerable: true,
773
778
  get: function () { return chunkNHB2TI2B_js.Autocomplete; }
@@ -776,9 +781,13 @@ Object.defineProperty(exports, "autocompleteInputVariants", {
776
781
  enumerable: true,
777
782
  get: function () { return chunkNHB2TI2B_js.autocompleteInputVariants; }
778
783
  });
779
- Object.defineProperty(exports, "BottomNavBar", {
784
+ Object.defineProperty(exports, "Badge", {
780
785
  enumerable: true,
781
- get: function () { return chunkPND5YKFN_js.BottomNavBar; }
786
+ get: function () { return chunkZ5S7LHMY_js.Badge; }
787
+ });
788
+ Object.defineProperty(exports, "badgeVariants", {
789
+ enumerable: true,
790
+ get: function () { return chunkZ5S7LHMY_js.badgeVariants; }
782
791
  });
783
792
  Object.defineProperty(exports, "Banner", {
784
793
  enumerable: true,
@@ -788,13 +797,9 @@ Object.defineProperty(exports, "bannerVariants", {
788
797
  enumerable: true,
789
798
  get: function () { return chunk6EG6EAHW_js.bannerVariants; }
790
799
  });
791
- Object.defineProperty(exports, "Button", {
792
- enumerable: true,
793
- get: function () { return chunkYZTVHCLK_js.Button; }
794
- });
795
- Object.defineProperty(exports, "buttonVariants", {
800
+ Object.defineProperty(exports, "BottomNavBar", {
796
801
  enumerable: true,
797
- get: function () { return chunkYZTVHCLK_js.buttonVariants; }
802
+ get: function () { return chunkPND5YKFN_js.BottomNavBar; }
798
803
  });
799
804
  Object.defineProperty(exports, "Breadcrumb", {
800
805
  enumerable: true,
@@ -804,6 +809,14 @@ Object.defineProperty(exports, "breadcrumbVariants", {
804
809
  enumerable: true,
805
810
  get: function () { return chunkH3JNRTAI_js.breadcrumbVariants; }
806
811
  });
812
+ Object.defineProperty(exports, "Button", {
813
+ enumerable: true,
814
+ get: function () { return chunkYZTVHCLK_js.Button; }
815
+ });
816
+ Object.defineProperty(exports, "buttonVariants", {
817
+ enumerable: true,
818
+ get: function () { return chunkYZTVHCLK_js.buttonVariants; }
819
+ });
807
820
  Object.defineProperty(exports, "Card", {
808
821
  enumerable: true,
809
822
  get: function () { return chunkZAUYE2EI_js.Card; }
@@ -840,6 +853,10 @@ Object.defineProperty(exports, "Accordion", {
840
853
  enumerable: true,
841
854
  get: function () { return chunkMCF3EQTV_js.Accordion; }
842
855
  });
856
+ Object.defineProperty(exports, "Alert", {
857
+ enumerable: true,
858
+ get: function () { return chunkWBRVUWGC_js.Alert; }
859
+ });
843
860
  Object.defineProperty(exports, "AnchorTabs", {
844
861
  enumerable: true,
845
862
  get: function () { return chunkWXEZA6NE_js.AnchorTabs; }
@@ -848,14 +865,6 @@ Object.defineProperty(exports, "Avatar", {
848
865
  enumerable: true,
849
866
  get: function () { return chunkEY4ZIR3P_js.Avatar; }
850
867
  });
851
- Object.defineProperty(exports, "Badge", {
852
- enumerable: true,
853
- get: function () { return chunkZ5S7LHMY_js.Badge; }
854
- });
855
- Object.defineProperty(exports, "badgeVariants", {
856
- enumerable: true,
857
- get: function () { return chunkZ5S7LHMY_js.badgeVariants; }
858
- });
859
868
  Object.defineProperty(exports, "cn", {
860
869
  enumerable: true,
861
870
  get: function () { return chunkADIDI7AJ_js.cn; }
package/dist/index.mjs CHANGED
@@ -1,67 +1,68 @@
1
+ export { Textarea, textareaVariants } from './chunk-ZZ4EWC53.mjs';
1
2
  export { Toast, toastVariants } from './chunk-YVTUUNAX.mjs';
2
- export { Tooltip } from './chunk-2MJTZ6RR.mjs';
3
3
  export { Toggle } from './chunk-2AB5ZHY5.mjs';
4
4
  export { VerticalMarquee } from './chunk-JP5ZR2HI.mjs';
5
+ export { Tooltip } from './chunk-2MJTZ6RR.mjs';
5
6
  export { Spinner, spinnerVariants } from './chunk-NCSFXSOZ.mjs';
6
7
  export { StatCard } from './chunk-O2W7NR33.mjs';
7
8
  export { StatusBadge, statusBadgeVariants } from './chunk-FZ7UNXSC.mjs';
9
+ export { Sidebar } from './chunk-MPL35D5G.mjs';
8
10
  export { Stepper } from './chunk-2ASKBL63.mjs';
9
11
  export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-DMCMWOBJ.mjs';
10
12
  export { Tabs } from './chunk-VOZPGXQD.mjs';
11
13
  export { Tag, tagVariants } from './chunk-WOG6V7OW.mjs';
12
- export { Textarea, textareaVariants } from './chunk-ZZ4EWC53.mjs';
13
14
  export { RadioGroup } from './chunk-F2BUMJYW.mjs';
14
15
  export { Rating } from './chunk-SGDC4IVX.mjs';
15
- export { RoomTypeCard, RoomTypeCardSkeleton } from './chunk-QTW2FJUJ.mjs';
16
+ export { RoomTypeCard, RoomTypeCardSkeleton } from './chunk-BFGRWOQM.mjs';
16
17
  export { SearchBar } from './chunk-KQK7LFWM.mjs';
17
18
  export { SegmentedControl } from './chunk-36Y7UU32.mjs';
18
19
  export { Select, selectVariants } from './chunk-333YD5QI.mjs';
19
- export { Sidebar } from './chunk-MPL35D5G.mjs';
20
+ export { SignInCallout, signInCalloutVariants } from './chunk-Z3KRMKHP.mjs';
20
21
  export { Skeleton, SkeletonCircle, SkeletonImage, SkeletonText } from './chunk-PAHSQMXV.mjs';
22
+ export { LoadingOverlay } from './chunk-WVEJS2J2.mjs';
21
23
  export { MegaMenu } from './chunk-EUEM2D5M.mjs';
22
- export { LinkCard } from './chunk-UYDZKAGZ.mjs';
23
24
  export { MobileMenu } from './chunk-R4DC7XPP.mjs';
24
- export { Modal } from './chunk-74B2EGKT.mjs';
25
25
  export { Pagination } from './chunk-XQVODPHL.mjs';
26
+ export { Modal } from './chunk-74B2EGKT.mjs';
26
27
  export { PriceDisplay } from './chunk-REXLQTNE.mjs';
27
- export { ProgressBar, progressBarVariants, progressFillVariants } from './chunk-UGYMWWKT.mjs';
28
28
  export { PromoBanner, promoBannerVariants } from './chunk-FNDR3WOZ.mjs';
29
+ export { ProgressBar, progressBarVariants, progressFillVariants } from './chunk-UGYMWWKT.mjs';
29
30
  export { Header } from './chunk-PPDKQ3FF.mjs';
30
31
  export { HotelCard } from './chunk-XSSRFA5O.mjs';
31
32
  export { IconBadge, iconBadgeVariants } from './chunk-I4WCNTNP.mjs';
32
33
  export { ImageGallery } from './chunk-QU6ZRLKO.mjs';
33
34
  export { ImageWithFallback } from './chunk-BUXVK2HE.mjs';
34
- export { Input, inputVariants } from './chunk-GRG4USTC.mjs';
35
35
  export { Lightbox } from './chunk-GBWVIY3C.mjs';
36
- export { LoadingOverlay } from './chunk-WVEJS2J2.mjs';
36
+ export { Input, inputVariants } from './chunk-GRG4USTC.mjs';
37
+ export { LinkCard } from './chunk-UYDZKAGZ.mjs';
37
38
  export { DualRangeSlider } from './chunk-ERL3WXNY.mjs';
38
- export { EmptyState } from './chunk-OCUHCDAQ.mjs';
39
39
  export { ErrorBoundary } from './chunk-5257MWFI.mjs';
40
+ export { EmptyState } from './chunk-OCUHCDAQ.mjs';
40
41
  export { FilterAccordion } from './chunk-VQVRKRSM.mjs';
41
- export { FilterPill } from './chunk-YKBASX5A.mjs';
42
42
  export { FloatingDock } from './chunk-PBDPZTHK.mjs';
43
+ export { FilterPill } from './chunk-YKBASX5A.mjs';
43
44
  export { Footer } from './chunk-SZ3SV4SJ.mjs';
44
45
  export { GuestPicker } from './chunk-EJ7LDW7E.mjs';
45
46
  export { Carousel } from './chunk-OOPP4ES2.mjs';
46
- export { Counter } from './chunk-LRNSVRUN.mjs';
47
47
  export { Checkbox } from './chunk-EEIPCJQ2.mjs';
48
- export { DetailList } from './chunk-N6THLJIG.mjs';
48
+ export { Counter } from './chunk-LRNSVRUN.mjs';
49
49
  export { DatePickerInput, DateRangePicker } from './chunk-FL3GD5FJ.mjs';
50
+ export { DetailList } from './chunk-N6THLJIG.mjs';
50
51
  export { Divider } from './chunk-E4B6LXK7.mjs';
51
52
  export { Drawer } from './chunk-ZLF7IL3Y.mjs';
52
53
  export { DropdownMenu } from './chunk-Q7BKR6O7.mjs';
53
- export { Alert } from './chunk-BQWVWK74.mjs';
54
54
  export { Autocomplete, autocompleteInputVariants } from './chunk-B47HQHX3.mjs';
55
- export { BottomNavBar } from './chunk-UQRQZLMQ.mjs';
55
+ export { Badge, badgeVariants } from './chunk-XZU2SISM.mjs';
56
56
  export { Banner, bannerVariants } from './chunk-LFIZX2S6.mjs';
57
- export { Button, buttonVariants } from './chunk-4U5MNA3B.mjs';
57
+ export { BottomNavBar } from './chunk-UQRQZLMQ.mjs';
58
58
  export { Breadcrumb, breadcrumbVariants } from './chunk-UKCH6RYL.mjs';
59
+ export { Button, buttonVariants } from './chunk-4U5MNA3B.mjs';
59
60
  export { Card, CardContent, CardDescription, CardImage, CardTitle, cardImageVariants, cardVariants } from './chunk-V5J2XLPD.mjs';
60
61
  export { CardList } from './chunk-RJWHPHHX.mjs';
61
62
  export { Accordion } from './chunk-NZ7GF6RF.mjs';
63
+ export { Alert } from './chunk-BQWVWK74.mjs';
62
64
  export { AnchorTabs } from './chunk-M2H6QUAL.mjs';
63
65
  export { Avatar } from './chunk-2POGTS27.mjs';
64
- export { Badge, badgeVariants } from './chunk-XZU2SISM.mjs';
65
66
  import { cn } from './chunk-IMKLN273.mjs';
66
67
  export { cn } from './chunk-IMKLN273.mjs';
67
68
  import * as React from 'react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dododog/ui",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "React UI component library for DodoDog — pet-friendly travel platform",
5
5
  "sideEffects": false,
6
6
  "license": "MIT",
@@ -278,6 +278,11 @@
278
278
  "import": "./dist/components/Sidebar/index.mjs",
279
279
  "require": "./dist/components/Sidebar/index.js"
280
280
  },
281
+ "./sign-in-callout": {
282
+ "types": "./dist/components/SignInCallout/index.d.ts",
283
+ "import": "./dist/components/SignInCallout/index.mjs",
284
+ "require": "./dist/components/SignInCallout/index.js"
285
+ },
281
286
  "./skeleton": {
282
287
  "types": "./dist/components/Skeleton/index.d.ts",
283
288
  "import": "./dist/components/Skeleton/index.mjs",