@odynn/awayz-hotels 0.2.15 → 0.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/Legend.css +1 -1
- package/dist/components/Legend/Legend.js +34 -34
- package/dist/lib/components/Legend/Legend.d.ts +9 -1
- package/package.json +1 -1
- package/dist/components/Legend/Legend.stories.js +0 -69
- package/dist/lib/components/Legend/Legend.stories.d.ts +0 -7
- package/dist/lib/storybook/exampleData.d.ts +0 -625
- package/dist/storybook/exampleData.js +0 -2268
package/dist/assets/Legend.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";@media (prefers-color-scheme: dark){body[data-theme=auto]{--background: #14181f;--opaque-background: #20242880;--foreground: #22272d;--text: #c3c9d2;--text-light: #c3c9d260;--border: #3b4048}}@media (prefers-color-scheme: light){body[data-theme=auto]{--background: #f9fdff;--opaque-background: #f9fdff95;--foreground: #fff;--text: #252e34;--text-light: #252e3460;--border: #e7eef3}}body[data-theme=light]{--background: #f9fdff;--opaque-background: #f9fdff95;--foreground: #fff;--text: #252e34;--text-light: #252e3460;--border: #e7eef3}*{font-family:Inter,sans-serif!important;margin:0;padding:0;box-sizing:border-box}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}p,input{line-height:normal;margin:0;color:var(--text, #252e34);background-color:transparent}a{text-decoration:none}hr{border:none;border-top:1px solid var(--border, #e7eef3);width:100%}@keyframes slide-in-right{0%{opacity:0;transform:translate(0)}50%{transform:translate(-100vw);opacity:0}50.001%{opacity:0;transform:translate(105vw)}50.002%{opacity:1;transform:translate(100vw)}to{transform:translate(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(0)}50%{transform:translate(100vw);opacity:0}50.001%{opacity:0;transform:translate(-100vw)}50.002%{opacity:1;transform:translate(-100vw)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0)}to{transform:translate(100vw);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0)}to{transform:translate(-100vw);opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translate(0);opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes scale-out{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes scale-in{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes no-no{0%{transform:translate(0)}20%{transform:translate(-20px)}40%{transform:translate(15px)}60%{transform:translate(-10px)}80%{transform:translate(5px)}to{transform:translate(0)}}@keyframes loading-track{0%{transform:translate(-100%);opacity:0}25%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(100%)}}@keyframes loading-in{0%{height:0}to{height:5px}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shine{0%{background-position:right}}@keyframes text-pulse{0%{opacity:.75}35%{opacity:1}65%{opacity:1}to{opacity:.75}}@keyframes pulse{0%{opacity:.85}35%{opacity:1}65%{opacity:1}to{opacity:.85}}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes spring-in{0%{opacity:0;transform:scale(.8)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes ripple{0%{transform:scale(1)}to{transform:scale(1.1,1.4)}}@keyframes tip-fade-right{0%{opacity:0;transform:translate(-20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-left{0%{opacity:0;transform:translate(20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-down{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes tip-fade-up{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@keyframes slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@keyframes scale-fade-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scroll-horizontally{0%{transform:translate(0)}to{transform:translate(-50%)}}.hotel-legend{background:var(--opaque-background, rgba(249, 253, 255, .5843137255));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);--webkit-backdrop-filter: blur(10px);border-radius:1rem;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none;pointer-events:all;z-index:100;display:flex;flex-direction:column;padding:.5rem;border:1px solid var(--border, #e7eef3);border-color:var(--foreground, #fff)}.hotel-legend .header{
|
|
1
|
+
@import"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap";@media (prefers-color-scheme: dark){body[data-theme=auto]{--background: #14181f;--opaque-background: #20242880;--foreground: #22272d;--text: #c3c9d2;--text-light: #c3c9d260;--border: #3b4048}}@media (prefers-color-scheme: light){body[data-theme=auto]{--background: #f9fdff;--opaque-background: #f9fdff95;--foreground: #fff;--text: #252e34;--text-light: #252e3460;--border: #e7eef3}}body[data-theme=light]{--background: #f9fdff;--opaque-background: #f9fdff95;--foreground: #fff;--text: #252e34;--text-light: #252e3460;--border: #e7eef3}*{font-family:Inter,sans-serif!important;margin:0;padding:0;box-sizing:border-box}:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}p,input{line-height:normal;margin:0;color:var(--text, #252e34);background-color:transparent}a{text-decoration:none}hr{border:none;border-top:1px solid var(--border, #e7eef3);width:100%}@keyframes slide-in-right{0%{opacity:0;transform:translate(0)}50%{transform:translate(-100vw);opacity:0}50.001%{opacity:0;transform:translate(105vw)}50.002%{opacity:1;transform:translate(100vw)}to{transform:translate(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(0)}50%{transform:translate(100vw);opacity:0}50.001%{opacity:0;transform:translate(-100vw)}50.002%{opacity:1;transform:translate(-100vw)}to{transform:translate(0)}}@keyframes slide-out-right{0%{transform:translate(0)}to{transform:translate(100vw);opacity:1}}@keyframes slide-out-left{0%{transform:translate(0)}to{transform:translate(-100vw);opacity:1}}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translate(0);opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes scale-out{0%{transform:scale(1)}to{transform:scale(0)}}@keyframes scale-in{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes no-no{0%{transform:translate(0)}20%{transform:translate(-20px)}40%{transform:translate(15px)}60%{transform:translate(-10px)}80%{transform:translate(5px)}to{transform:translate(0)}}@keyframes loading-track{0%{transform:translate(-100%);opacity:0}25%{opacity:1}75%{opacity:1}to{opacity:0;transform:translate(100%)}}@keyframes loading-in{0%{height:0}to{height:5px}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shine{0%{background-position:right}}@keyframes text-pulse{0%{opacity:.75}35%{opacity:1}65%{opacity:1}to{opacity:.75}}@keyframes pulse{0%{opacity:.85}35%{opacity:1}65%{opacity:1}to{opacity:.85}}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes spring-in{0%{opacity:0;transform:scale(.8)}70%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes ripple{0%{transform:scale(1)}to{transform:scale(1.1,1.4)}}@keyframes tip-fade-right{0%{opacity:0;transform:translate(-20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-left{0%{opacity:0;transform:translate(20px,-50%)}to{opacity:1;transform:translateY(-50%)}}@keyframes tip-fade-down{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes tip-fade-up{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@keyframes slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slide-out{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@keyframes scale-fade-in{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scroll-horizontally{0%{transform:translate(0)}to{transform:translate(-50%)}}.hotel-legend{background:var(--opaque-background, rgba(249, 253, 255, .5843137255));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);--webkit-backdrop-filter: blur(10px);border-radius:1rem;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none;pointer-events:all;z-index:100;display:flex;flex-direction:column;padding:.5rem;border:1px solid var(--border, #e7eef3);border-color:var(--foreground, #fff)}.hotel-legend .header{color:var(--text, #252e34);display:flex;gap:.5rem;justify-content:space-between;align-items:center;font-size:.8rem}.hotel-legend .header .chevron{transition:all .2s ease-in-out}.hotel-legend .subheader{font-size:.7rem;color:var(--text, #252e34)}.hotel-legend:hover{background-color:var(--foreground, #fff)}@media screen and (max-width: 1024px){.hotel-legend{display:none}}.hotel-legend .hotel-list{display:flex;flex-direction:column;gap:.5rem;width:100%}.hotel-legend .filter-content{display:grid;grid-template-rows:0fr;transition:all .2s ease-in-out}.hotel-legend .filter-content .inner{transition:all .2s ease-in-out;overflow:hidden;display:flex;flex-direction:column;gap:.25rem;max-height:50vh}.hotel-legend .filter-content .inner .chain{font-size:.7rem;background-color:var(--foreground, #fff);border:1px solid var(--border, #e7eef3);border-radius:.5rem;padding:.25rem}.hotel-legend .filter-content .inner .more-filters{cursor:pointer;font-size:.7rem;padding:.25rem;text-align:center;text-decoration:underline}.hotel-legend.is-open .chevron{rotate:180deg}.hotel-legend.is-open .filter-content{grid-template-rows:1fr;border-top:1px solid var(--border, #e7eef3);padding-top:.5rem}.hotel-legend.is-open .filter-content .inner{overflow-y:auto}
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as r, Fragment as i, jsxs as n } from "react/jsx-runtime";
|
|
2
2
|
import { useState as N, useMemo as k } from "react";
|
|
3
3
|
import C from "../Checkbox/Checkbox.js";
|
|
4
|
-
import { HotelChains as
|
|
4
|
+
import { HotelChains as t } from "../../definitions/HotelChains.js";
|
|
5
5
|
import { F as b } from "../../index-gse40uZM.js";
|
|
6
6
|
import '../../assets/Legend.css';const F = ({
|
|
7
|
-
hotelResults:
|
|
8
|
-
onChange:
|
|
9
|
-
value:
|
|
10
|
-
onOtherFilters:
|
|
7
|
+
hotelResults: l,
|
|
8
|
+
onChange: d,
|
|
9
|
+
value: o,
|
|
10
|
+
onOtherFilters: m
|
|
11
11
|
}) => {
|
|
12
|
-
var
|
|
13
|
-
const [
|
|
14
|
-
const e =
|
|
12
|
+
var p;
|
|
13
|
+
const [h, g] = N(!1), s = k(() => {
|
|
14
|
+
const e = l.map((c) => c.hotelGroup);
|
|
15
15
|
return Array.from(new Set(e));
|
|
16
|
-
}, [
|
|
17
|
-
if (
|
|
18
|
-
const
|
|
19
|
-
|
|
16
|
+
}, [l]), a = (e) => {
|
|
17
|
+
if (d) {
|
|
18
|
+
const f = o != null && o.includes(e) ? o.filter((c) => c !== e) : [...o || [], e];
|
|
19
|
+
d(f);
|
|
20
20
|
}
|
|
21
21
|
};
|
|
22
|
-
return /* @__PURE__ */
|
|
23
|
-
/* @__PURE__ */
|
|
22
|
+
return !s || s.length === 0 ? /* @__PURE__ */ r(i, {}) : /* @__PURE__ */ n("div", { className: `hotel-legend ${h ? "" : "is-open"}`, children: [
|
|
23
|
+
/* @__PURE__ */ n(
|
|
24
24
|
"div",
|
|
25
25
|
{
|
|
26
26
|
className: "header",
|
|
27
27
|
onClick: () => {
|
|
28
|
-
g(!
|
|
28
|
+
g(!h);
|
|
29
29
|
},
|
|
30
30
|
children: [
|
|
31
|
-
/* @__PURE__ */
|
|
32
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ r("p", { children: "Legend" }),
|
|
32
|
+
/* @__PURE__ */ r(b, { className: "chevron" })
|
|
33
33
|
]
|
|
34
34
|
}
|
|
35
35
|
),
|
|
36
|
-
/* @__PURE__ */
|
|
37
|
-
/* @__PURE__ */
|
|
38
|
-
(
|
|
36
|
+
/* @__PURE__ */ r("div", { className: "filter-content", children: /* @__PURE__ */ n("div", { className: "inner", children: [
|
|
37
|
+
/* @__PURE__ */ r("p", { className: "subheader", children: "Supported Loyalty Programs" }),
|
|
38
|
+
(p = s == null ? void 0 : s.filter((e) => t.toList().includes(e))) == null ? void 0 : p.map((e) => /* @__PURE__ */ r("div", { className: "chain", children: /* @__PURE__ */ r(
|
|
39
39
|
C,
|
|
40
40
|
{
|
|
41
|
-
label:
|
|
42
|
-
style: { backgroundColor:
|
|
41
|
+
label: t.toProgram(e),
|
|
42
|
+
style: { backgroundColor: t.toColour(e) },
|
|
43
43
|
onChange: () => a(e),
|
|
44
|
-
checked: (
|
|
44
|
+
checked: (o == null ? void 0 : o.includes(e)) || !1
|
|
45
45
|
}
|
|
46
46
|
) }, e)),
|
|
47
|
-
|
|
48
|
-
(e) => !
|
|
49
|
-
) && /* @__PURE__ */
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
/* @__PURE__ */
|
|
47
|
+
s.some(
|
|
48
|
+
(e) => !t.toList().includes(e)
|
|
49
|
+
) && /* @__PURE__ */ n(i, { children: [
|
|
50
|
+
/* @__PURE__ */ r("hr", {}),
|
|
51
|
+
/* @__PURE__ */ r("div", { className: "chain", children: /* @__PURE__ */ r(
|
|
52
52
|
C,
|
|
53
53
|
{
|
|
54
54
|
label: "Other Properties",
|
|
55
|
-
style: { backgroundColor:
|
|
55
|
+
style: { backgroundColor: t.toColour("other") },
|
|
56
56
|
onChange: () => a("other"),
|
|
57
|
-
checked: (
|
|
57
|
+
checked: (o == null ? void 0 : o.includes("other")) || !1
|
|
58
58
|
}
|
|
59
59
|
) })
|
|
60
60
|
] }),
|
|
61
|
-
!!
|
|
62
|
-
/* @__PURE__ */
|
|
63
|
-
/* @__PURE__ */
|
|
61
|
+
!!m && /* @__PURE__ */ n(i, { children: [
|
|
62
|
+
/* @__PURE__ */ r("hr", {}),
|
|
63
|
+
/* @__PURE__ */ r("p", { onClick: m, className: "more-filters", children: "More Filters" })
|
|
64
64
|
] })
|
|
65
65
|
] }) })
|
|
66
66
|
] });
|
|
@@ -18,4 +18,12 @@ export interface ILegendProps {
|
|
|
18
18
|
*/
|
|
19
19
|
onOtherFilters?: () => void;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* The `Legend` component displays a list of hotel chains and allows users to filter hotels based on their loyalty programs.
|
|
23
|
+
* It also provides an option to view more filters if available.
|
|
24
|
+
*
|
|
25
|
+
* @param {ILegendProps} props - The properties for the Legend component.
|
|
26
|
+
* @returns {JSX.Element} The rendered Legend component.
|
|
27
|
+
*/
|
|
28
|
+
declare const Legend: ({ hotelResults, onChange, value, onOtherFilters }: ILegendProps) => JSX.Element;
|
|
29
|
+
export { Legend };
|
package/package.json
CHANGED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
-
import { Legend as a } from "./Legend.js";
|
|
3
|
-
import { testHotels as u } from "../../storybook/exampleData.js";
|
|
4
|
-
import { useState as f } from "react";
|
|
5
|
-
const r = u, d = {
|
|
6
|
-
title: "Hotels/Legend",
|
|
7
|
-
component: a,
|
|
8
|
-
parameters: {
|
|
9
|
-
layout: "centered",
|
|
10
|
-
backgrounds: {
|
|
11
|
-
default: "hotel-background",
|
|
12
|
-
values: [
|
|
13
|
-
{
|
|
14
|
-
name: "hotel-background",
|
|
15
|
-
value: "url(https://images.unsplash.com/photo-1566073771259-6a8506099945?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1740&q=80)"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: "luxury-hotel",
|
|
19
|
-
value: "url(https://images.unsplash.com/photo-1542314831-068cd1dbfeeb?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1740&q=80)"
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
},
|
|
23
|
-
actions: { argTypesRegex: "^on.*" }
|
|
24
|
-
},
|
|
25
|
-
tags: ["autodocs"],
|
|
26
|
-
argTypes: {
|
|
27
|
-
onChange: { action: "onChange" },
|
|
28
|
-
value: {
|
|
29
|
-
control: []
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}, h = {
|
|
33
|
-
render: (t) => {
|
|
34
|
-
const [l, s] = f([
|
|
35
|
-
"marriott"
|
|
36
|
-
]);
|
|
37
|
-
return /* @__PURE__ */ n(
|
|
38
|
-
a,
|
|
39
|
-
{
|
|
40
|
-
...t,
|
|
41
|
-
value: l,
|
|
42
|
-
onChange: (e) => {
|
|
43
|
-
var o;
|
|
44
|
-
s(e), (o = t.onChange) == null || o.call(t, e);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
);
|
|
48
|
-
},
|
|
49
|
-
args: {
|
|
50
|
-
hotelResults: r
|
|
51
|
-
}
|
|
52
|
-
}, x = {
|
|
53
|
-
args: {
|
|
54
|
-
hotelResults: r.filter(
|
|
55
|
-
(t) => t.hotelGroup === "marriott"
|
|
56
|
-
),
|
|
57
|
-
value: ["marriott"]
|
|
58
|
-
},
|
|
59
|
-
parameters: {
|
|
60
|
-
backgrounds: {
|
|
61
|
-
default: "luxury-hotel"
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
export {
|
|
66
|
-
h as Default,
|
|
67
|
-
x as SingleHotelGroup,
|
|
68
|
-
d as default
|
|
69
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { Legend } from './Legend';
|
|
3
|
-
declare const meta: Meta<typeof Legend>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof Legend>;
|
|
6
|
-
export declare const Default: Story;
|
|
7
|
-
export declare const SingleHotelGroup: Story;
|