@inzumer/ui-library 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Select.styles-CeZROqOk.d.ts +8 -0
- package/dist/{chunk-BKPP4D3Q.js → chunk-27HTTVFO.js} +2 -2
- package/dist/{chunk-BKPP4D3Q.js.map → chunk-27HTTVFO.js.map} +1 -1
- package/dist/chunk-4H6VER5P.js +36 -0
- package/dist/chunk-4H6VER5P.js.map +1 -0
- package/dist/chunk-4TPQTZSR.js +76 -0
- package/dist/chunk-4TPQTZSR.js.map +1 -0
- package/dist/{chunk-D4I5OF3C.js → chunk-5LKLTY55.js} +2 -2
- package/dist/{chunk-D4I5OF3C.js.map → chunk-5LKLTY55.js.map} +1 -1
- package/dist/{chunk-WUEVXL76.js → chunk-DIA7L6IA.js} +4 -33
- package/dist/chunk-DIA7L6IA.js.map +1 -0
- package/dist/{chunk-DP274HDM.js → chunk-IY452YEX.js} +14 -4
- package/dist/chunk-IY452YEX.js.map +1 -0
- package/dist/{chunk-W3H7DYWX.js → chunk-J7X6NLSR.js} +30 -12
- package/dist/chunk-J7X6NLSR.js.map +1 -0
- package/dist/{chunk-5IHM2545.js → chunk-KAU7S3D4.js} +2 -2
- package/dist/{chunk-5IHM2545.js.map → chunk-KAU7S3D4.js.map} +1 -1
- package/dist/{chunk-ZABQF65Z.js → chunk-KSNAVEJP.js} +3 -3
- package/dist/{chunk-ZABQF65Z.js.map → chunk-KSNAVEJP.js.map} +1 -1
- package/dist/chunk-LLJXVAR6.js +184 -0
- package/dist/chunk-LLJXVAR6.js.map +1 -0
- package/dist/{chunk-7HQFLM4A.js → chunk-NA7YKEO4.js} +2 -2
- package/dist/{chunk-7HQFLM4A.js.map → chunk-NA7YKEO4.js.map} +1 -1
- package/dist/{chunk-ULLCBART.js → chunk-NTXFFBL6.js} +4 -4
- package/dist/{chunk-ULLCBART.js.map → chunk-NTXFFBL6.js.map} +1 -1
- package/dist/{chunk-P4CV2EPR.js → chunk-SPDOYFCU.js} +2 -2
- package/dist/{chunk-P4CV2EPR.js.map → chunk-SPDOYFCU.js.map} +1 -1
- package/dist/{chunk-VGLFR5SB.js → chunk-TO3FF6FR.js} +4 -4
- package/dist/{chunk-VGLFR5SB.js.map → chunk-TO3FF6FR.js.map} +1 -1
- package/dist/{chunk-UL33H4AD.js → chunk-TRLFK626.js} +24 -4
- package/dist/chunk-TRLFK626.js.map +1 -0
- package/dist/{chunk-3YRDRHO3.js → chunk-UUW7L2AV.js} +3 -3
- package/dist/{chunk-3YRDRHO3.js.map → chunk-UUW7L2AV.js.map} +1 -1
- package/dist/{chunk-PE6XEC7Y.js → chunk-VCJN4FS2.js} +4 -4
- package/dist/{chunk-PE6XEC7Y.js.map → chunk-VCJN4FS2.js.map} +1 -1
- package/dist/chunk-VK24YOIC.js +184 -0
- package/dist/chunk-VK24YOIC.js.map +1 -0
- package/dist/chunk-XUGSIK2P.js +238 -0
- package/dist/chunk-XUGSIK2P.js.map +1 -0
- package/dist/{chunk-N5CLCKR3.js → chunk-ZH2EDGW6.js} +3 -3
- package/dist/{chunk-N5CLCKR3.js.map → chunk-ZH2EDGW6.js.map} +1 -1
- package/dist/components/atoms/Icon/index.js +1 -1
- package/dist/components/atoms/Image/index.js +1 -1
- package/dist/components/atoms/Input/index.js +2 -2
- package/dist/components/atoms/Link/index.js +1 -1
- package/dist/components/atoms/RichText/index.js +1 -1
- package/dist/components/atoms/Select/index.d.ts +1 -5
- package/dist/components/atoms/Select/index.js +3 -2
- package/dist/components/atoms/Switch/index.js +2 -2
- package/dist/components/atoms/Textarea/index.js +2 -2
- package/dist/components/molecules/BottomSheet/index.js +3 -3
- package/dist/components/molecules/Breadcrumbs/index.js +3 -3
- package/dist/components/molecules/Card/index.js +2 -2
- package/dist/components/molecules/Carousel/index.d.ts +61 -0
- package/dist/components/molecules/{CookieBanner → Carousel}/index.js +2 -2
- package/dist/components/molecules/Drawer/index.js +3 -3
- package/dist/components/molecules/Dropdown/index.d.ts +44 -0
- package/dist/components/molecules/Dropdown/index.js +8 -0
- package/dist/components/molecules/MediaCard/index.d.ts +56 -0
- package/dist/components/molecules/MediaCard/index.js +6 -0
- package/dist/components/molecules/MediaCard/index.js.map +1 -0
- package/dist/components/molecules/Modal/index.d.ts +4 -0
- package/dist/components/molecules/Modal/index.js +3 -3
- package/dist/components/molecules/Snackbar/index.js +1 -1
- package/dist/components/molecules/Timeline/index.d.ts +7 -0
- package/dist/components/molecules/Timeline/index.js +3 -2
- package/dist/components/organisms/CookieConsent/index.d.ts +59 -0
- package/dist/components/{molecules/CookiePreferences → organisms/CookieConsent}/index.js +5 -5
- package/dist/components/organisms/CookieConsent/index.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +22 -19
- package/package.json +15 -7
- package/dist/chunk-36CVKI5R.js +0 -79
- package/dist/chunk-36CVKI5R.js.map +0 -1
- package/dist/chunk-DP274HDM.js.map +0 -1
- package/dist/chunk-TR7XKJCO.js +0 -85
- package/dist/chunk-TR7XKJCO.js.map +0 -1
- package/dist/chunk-UL33H4AD.js.map +0 -1
- package/dist/chunk-W3H7DYWX.js.map +0 -1
- package/dist/chunk-WUEVXL76.js.map +0 -1
- package/dist/components/molecules/CookieBanner/index.d.ts +0 -46
- package/dist/components/molecules/CookiePreferences/index.d.ts +0 -34
- /package/dist/components/molecules/{CookieBanner → Carousel}/index.js.map +0 -0
- /package/dist/components/molecules/{CookiePreferences → Dropdown}/index.js.map +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { Modal } from './chunk-J7X6NLSR.js';
|
|
2
|
+
import { Switch } from './chunk-KSNAVEJP.js';
|
|
3
|
+
import { Button } from './chunk-KL6I2JFC.js';
|
|
4
|
+
import { RichText } from './chunk-SPDOYFCU.js';
|
|
5
|
+
import { cn } from './chunk-6LLGTBM6.js';
|
|
6
|
+
import { useId, useState } from 'react';
|
|
7
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
// src/components/organisms/CookieConsent/CookieConsent.styles.ts
|
|
10
|
+
var cookieBannerStyles = [
|
|
11
|
+
"fixed inset-x-0 bottom-0 z-40 border-t border-[var(--border-default)]",
|
|
12
|
+
"bg-[var(--surface-primary)] shadow-lg"
|
|
13
|
+
].join(" ");
|
|
14
|
+
var cookieBannerContentStyles = "mx-auto flex w-full max-w-5xl flex-col gap-3 px-4 py-4";
|
|
15
|
+
var cookieBannerTitleStyles = "text-lg font-semibold text-[var(--text-primary)]";
|
|
16
|
+
var cookieTextStyles = "text-sm text-[var(--text-secondary)]";
|
|
17
|
+
var cookieBannerActionsStyles = "flex flex-wrap gap-2";
|
|
18
|
+
var cookieBannerButtonStyles = "min-h-11 flex-1";
|
|
19
|
+
var cookiePreferencesIntroStyles = "mb-4 text-sm text-[var(--text-secondary)]";
|
|
20
|
+
var cookieCategoryListStyles = "flex flex-col gap-4";
|
|
21
|
+
var cookieCategoryStyles = "flex flex-col gap-2 rounded-lg border border-[var(--border-default)] p-4";
|
|
22
|
+
var cookieCategoryHeaderStyles = "flex items-center justify-between gap-4";
|
|
23
|
+
var cookieCategoryTitleStyles = "font-semibold text-[var(--text-primary)]";
|
|
24
|
+
var cookieCategoryRequiredStyles = "text-xs font-semibold text-[var(--text-secondary)]";
|
|
25
|
+
var choicesFor = (categories, enabled) => Object.fromEntries(
|
|
26
|
+
categories.filter((category) => !category.required).map(({ id }) => [id, enabled])
|
|
27
|
+
);
|
|
28
|
+
var CategoryList = ({
|
|
29
|
+
categories,
|
|
30
|
+
value,
|
|
31
|
+
onToggle,
|
|
32
|
+
requiredLabel,
|
|
33
|
+
switchId
|
|
34
|
+
}) => /* @__PURE__ */ jsx("ul", { className: cookieCategoryListStyles, children: categories.map((category) => {
|
|
35
|
+
const descriptionId = `${switchId(category.id)}-description`;
|
|
36
|
+
return /* @__PURE__ */ jsxs("li", { className: cookieCategoryStyles, children: [
|
|
37
|
+
/* @__PURE__ */ jsx("div", { className: cookieCategoryHeaderStyles, children: category.required ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
38
|
+
/* @__PURE__ */ jsx(RichText, { as: "h3", variant: "p2", className: cookieCategoryTitleStyles, children: category.title }),
|
|
39
|
+
/* @__PURE__ */ jsx(RichText, { as: "span", variant: "p4", className: cookieCategoryRequiredStyles, children: requiredLabel })
|
|
40
|
+
] }) : /* @__PURE__ */ jsx(
|
|
41
|
+
Switch,
|
|
42
|
+
{
|
|
43
|
+
id: switchId(category.id),
|
|
44
|
+
label: category.title,
|
|
45
|
+
checked: value[category.id] === true,
|
|
46
|
+
onCheckedChange: (checked) => onToggle(category.id, checked),
|
|
47
|
+
"aria-describedby": descriptionId
|
|
48
|
+
}
|
|
49
|
+
) }),
|
|
50
|
+
/* @__PURE__ */ jsx(RichText, { as: "p", id: descriptionId, variant: "p3", className: cookieTextStyles, children: category.description })
|
|
51
|
+
] }, category.id);
|
|
52
|
+
}) });
|
|
53
|
+
var CookieConsent = ({
|
|
54
|
+
mode,
|
|
55
|
+
categories,
|
|
56
|
+
value,
|
|
57
|
+
onChange,
|
|
58
|
+
labels,
|
|
59
|
+
open,
|
|
60
|
+
onOpenChange,
|
|
61
|
+
getId,
|
|
62
|
+
className
|
|
63
|
+
}) => {
|
|
64
|
+
const baseId = useId();
|
|
65
|
+
const id = (kind, name) => getId ? getId(kind, name) : `${baseId}-${kind}-${name}`;
|
|
66
|
+
const titleId = useId();
|
|
67
|
+
const [innerOpen, setInnerOpen] = useState(false);
|
|
68
|
+
const [draft, setDraft] = useState({});
|
|
69
|
+
const preferencesOpen = open ?? innerOpen;
|
|
70
|
+
const [wasOpen, setWasOpen] = useState(preferencesOpen);
|
|
71
|
+
if (preferencesOpen !== wasOpen) {
|
|
72
|
+
setWasOpen(preferencesOpen);
|
|
73
|
+
if (preferencesOpen) {
|
|
74
|
+
setDraft({ ...choicesFor(categories, false), ...value });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const setOpen = (next) => {
|
|
78
|
+
setInnerOpen(next);
|
|
79
|
+
onOpenChange?.(next);
|
|
80
|
+
};
|
|
81
|
+
const toggle = (categoryId, enabled) => mode === "inline" ? onChange({ ...choicesFor(categories, false), ...value, [categoryId]: enabled }) : setDraft((current) => ({ ...current, [categoryId]: enabled }));
|
|
82
|
+
if (mode === "inline") {
|
|
83
|
+
return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx(
|
|
84
|
+
CategoryList,
|
|
85
|
+
{
|
|
86
|
+
categories,
|
|
87
|
+
value: value ?? {},
|
|
88
|
+
onToggle: toggle,
|
|
89
|
+
requiredLabel: labels.required,
|
|
90
|
+
switchId: (name) => id("switch", name)
|
|
91
|
+
}
|
|
92
|
+
) });
|
|
93
|
+
}
|
|
94
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
95
|
+
mode === "banner" && value === null && !preferencesOpen && /* @__PURE__ */ jsx("section", { "aria-labelledby": titleId, className: cn(cookieBannerStyles, className), children: /* @__PURE__ */ jsxs("div", { className: cookieBannerContentStyles, children: [
|
|
96
|
+
/* @__PURE__ */ jsx(RichText, { as: "h2", id: titleId, variant: "s1", className: cookieBannerTitleStyles, children: labels.title }),
|
|
97
|
+
/* @__PURE__ */ jsx(RichText, { as: "p", variant: "p3", className: cookieTextStyles, children: labels.description }),
|
|
98
|
+
/* @__PURE__ */ jsxs("div", { className: cookieBannerActionsStyles, children: [
|
|
99
|
+
/* @__PURE__ */ jsx(
|
|
100
|
+
Button,
|
|
101
|
+
{
|
|
102
|
+
id: id("button", "accept"),
|
|
103
|
+
type: "button",
|
|
104
|
+
className: cookieBannerButtonStyles,
|
|
105
|
+
onClick: () => onChange(choicesFor(categories, true)),
|
|
106
|
+
children: labels.accept
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
/* @__PURE__ */ jsx(
|
|
110
|
+
Button,
|
|
111
|
+
{
|
|
112
|
+
id: id("button", "reject"),
|
|
113
|
+
type: "button",
|
|
114
|
+
variant: "secondary",
|
|
115
|
+
className: cookieBannerButtonStyles,
|
|
116
|
+
onClick: () => onChange(choicesFor(categories, false)),
|
|
117
|
+
children: labels.reject
|
|
118
|
+
}
|
|
119
|
+
),
|
|
120
|
+
/* @__PURE__ */ jsx(
|
|
121
|
+
Button,
|
|
122
|
+
{
|
|
123
|
+
id: id("button", "customize"),
|
|
124
|
+
type: "button",
|
|
125
|
+
variant: "ghost",
|
|
126
|
+
className: cookieBannerButtonStyles,
|
|
127
|
+
onClick: () => setOpen(true),
|
|
128
|
+
children: labels.customize
|
|
129
|
+
}
|
|
130
|
+
)
|
|
131
|
+
] })
|
|
132
|
+
] }) }),
|
|
133
|
+
/* @__PURE__ */ jsxs(
|
|
134
|
+
Modal,
|
|
135
|
+
{
|
|
136
|
+
open: preferencesOpen,
|
|
137
|
+
onClose: () => setOpen(false),
|
|
138
|
+
title: labels.preferencesTitle,
|
|
139
|
+
className: mode === "modal" ? className : void 0,
|
|
140
|
+
footer: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
141
|
+
/* @__PURE__ */ jsx(
|
|
142
|
+
Button,
|
|
143
|
+
{
|
|
144
|
+
id: id("button", "cancel"),
|
|
145
|
+
type: "button",
|
|
146
|
+
variant: "ghost",
|
|
147
|
+
onClick: () => setOpen(false),
|
|
148
|
+
children: labels.cancel
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
/* @__PURE__ */ jsx(
|
|
152
|
+
Button,
|
|
153
|
+
{
|
|
154
|
+
id: id("button", "save"),
|
|
155
|
+
type: "button",
|
|
156
|
+
onClick: () => {
|
|
157
|
+
onChange(draft);
|
|
158
|
+
setOpen(false);
|
|
159
|
+
},
|
|
160
|
+
children: labels.save
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
] }),
|
|
164
|
+
children: [
|
|
165
|
+
labels.preferencesDescription && /* @__PURE__ */ jsx(RichText, { as: "p", variant: "p3", className: cookiePreferencesIntroStyles, children: labels.preferencesDescription }),
|
|
166
|
+
/* @__PURE__ */ jsx(
|
|
167
|
+
CategoryList,
|
|
168
|
+
{
|
|
169
|
+
categories,
|
|
170
|
+
value: draft,
|
|
171
|
+
onToggle: toggle,
|
|
172
|
+
requiredLabel: labels.required,
|
|
173
|
+
switchId: (name) => id("switch", name)
|
|
174
|
+
}
|
|
175
|
+
)
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
] });
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export { CookieConsent };
|
|
183
|
+
//# sourceMappingURL=chunk-VK24YOIC.js.map
|
|
184
|
+
//# sourceMappingURL=chunk-VK24YOIC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/organisms/CookieConsent/CookieConsent.styles.ts","../src/components/organisms/CookieConsent/CookieConsent.tsx"],"names":[],"mappings":"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","file":"chunk-VK24YOIC.js","sourcesContent":["export const cookieBannerStyles = [\n 'fixed inset-x-0 bottom-0 z-40 border-t border-[var(--border-default)]',\n 'bg-[var(--surface-primary)] shadow-lg',\n].join(' ');\n\nexport const cookieBannerContentStyles = 'mx-auto flex w-full max-w-5xl flex-col gap-3 px-4 py-4';\n\nexport const cookieBannerTitleStyles = 'text-lg font-semibold text-[var(--text-primary)]';\n\nexport const cookieTextStyles = 'text-sm text-[var(--text-secondary)]';\n\nexport const cookieBannerActionsStyles = 'flex flex-wrap gap-2';\n\nexport const cookieBannerButtonStyles = 'min-h-11 flex-1';\n\nexport const cookiePreferencesIntroStyles = 'mb-4 text-sm text-[var(--text-secondary)]';\n\nexport const cookieCategoryListStyles = 'flex flex-col gap-4';\n\nexport const cookieCategoryStyles =\n 'flex flex-col gap-2 rounded-lg border border-[var(--border-default)] p-4';\n\nexport const cookieCategoryHeaderStyles = 'flex items-center justify-between gap-4';\n\nexport const cookieCategoryTitleStyles = 'font-semibold text-[var(--text-primary)]';\n\nexport const cookieCategoryRequiredStyles = 'text-xs font-semibold text-[var(--text-secondary)]';\n","import { Button, Modal, RichText, Switch } from '@components';\nimport { cn } from '@utils';\nimport { useId, useState, type ReactNode } from 'react';\nimport {\n cookieBannerActionsStyles,\n cookieBannerButtonStyles,\n cookieBannerContentStyles,\n cookieBannerStyles,\n cookieBannerTitleStyles,\n cookieCategoryHeaderStyles,\n cookieCategoryListStyles,\n cookieCategoryRequiredStyles,\n cookieCategoryStyles,\n cookieCategoryTitleStyles,\n cookiePreferencesIntroStyles,\n cookieTextStyles,\n} from './CookieConsent.styles';\n\nexport interface CookieCategory {\n id: string;\n title: string;\n description: ReactNode;\n /** Strictly necessary cookies can't be turned off; they show `labels.required` instead of a switch. */\n required?: boolean;\n}\n\n/** Whether each optional category is allowed, by id. */\nexport type CookieChoices = Record<string, boolean>;\n\n/**\n * - `banner`: bar at the bottom while there is no answer (`value === null`), with accept, reject\n * and customize; customize opens the preferences dialog.\n * - `modal`: only the preferences dialog, opened with `open` / `onOpenChange`.\n * - `inline`: the categories with switches inside a page (privacy, settings); every change is\n * saved at once, there is no save button.\n */\nexport type CookieConsentMode = 'banner' | 'modal' | 'inline';\n\nexport interface CookieConsentLabels {\n /** Banner title. */\n title: ReactNode;\n /** Banner text; usually ends with a link to the privacy policy. */\n description: ReactNode;\n accept: string;\n reject: string;\n customize: string;\n preferencesTitle: ReactNode;\n preferencesDescription?: ReactNode;\n save: string;\n cancel: string;\n /** Shown instead of a switch on required categories, e.g. \"Always on\". */\n required: string;\n}\n\nexport interface CookieConsentProps {\n mode: CookieConsentMode;\n categories: CookieCategory[];\n /** The saved answer, or `null` while the person hasn't answered. */\n value: CookieChoices | null;\n /** Called with the full answer: accept or reject all, the saved preferences, or a switch (inline). */\n onChange: (value: CookieChoices) => void;\n labels: CookieConsentLabels;\n /** Preferences dialog visibility, to open it from outside (e.g. a footer link). Optional in `banner`. */\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Stable ids for buttons and switches, e.g. for analytics click triggers. */\n getId?: (kind: 'button' | 'switch', name: string) => string;\n className?: string;\n}\n\nconst choicesFor = (categories: CookieCategory[], enabled: boolean): CookieChoices =>\n Object.fromEntries(\n categories.filter((category) => !category.required).map(({ id }) => [id, enabled]),\n );\n\ninterface CategoryListProps {\n categories: CookieCategory[];\n value: CookieChoices;\n onToggle: (id: string, enabled: boolean) => void;\n requiredLabel: string;\n switchId: (name: string) => string;\n}\n\nconst CategoryList = ({\n categories,\n value,\n onToggle,\n requiredLabel,\n switchId,\n}: CategoryListProps) => (\n <ul className={cookieCategoryListStyles}>\n {categories.map((category) => {\n const descriptionId = `${switchId(category.id)}-description`;\n return (\n <li key={category.id} className={cookieCategoryStyles}>\n <div className={cookieCategoryHeaderStyles}>\n {category.required ? (\n <>\n <RichText as=\"h3\" variant=\"p2\" className={cookieCategoryTitleStyles}>\n {category.title}\n </RichText>\n <RichText as=\"span\" variant=\"p4\" className={cookieCategoryRequiredStyles}>\n {requiredLabel}\n </RichText>\n </>\n ) : (\n <Switch\n id={switchId(category.id)}\n label={category.title}\n checked={value[category.id] === true}\n onCheckedChange={(checked) => onToggle(category.id, checked)}\n aria-describedby={descriptionId}\n />\n )}\n </div>\n <RichText as=\"p\" id={descriptionId} variant=\"p3\" className={cookieTextStyles}>\n {category.description}\n </RichText>\n </li>\n );\n })}\n </ul>\n);\n\n/**\n * Cookie consent in one component: the banner, the preferences dialog and the inline settings,\n * chosen with `mode`. Controlled: the consumer stores `value` and loads non-essential scripts only\n * after the person allows them. Accept and reject weigh the same, so rejecting is as easy as\n * accepting (GDPR / ePrivacy).\n */\nexport const CookieConsent = ({\n mode,\n categories,\n value,\n onChange,\n labels,\n open,\n onOpenChange,\n getId,\n className,\n}: CookieConsentProps) => {\n const baseId = useId();\n const id = (kind: 'button' | 'switch', name: string) =>\n getId ? getId(kind, name) : `${baseId}-${kind}-${name}`;\n const titleId = useId();\n const [innerOpen, setInnerOpen] = useState(false);\n const [draft, setDraft] = useState<CookieChoices>({});\n const preferencesOpen = open ?? innerOpen;\n const [wasOpen, setWasOpen] = useState(preferencesOpen);\n\n if (preferencesOpen !== wasOpen) {\n setWasOpen(preferencesOpen);\n if (preferencesOpen) {\n setDraft({ ...choicesFor(categories, false), ...value });\n }\n }\n\n const setOpen = (next: boolean) => {\n setInnerOpen(next);\n onOpenChange?.(next);\n };\n\n const toggle = (categoryId: string, enabled: boolean) =>\n mode === 'inline'\n ? onChange({ ...choicesFor(categories, false), ...value, [categoryId]: enabled })\n : setDraft((current) => ({ ...current, [categoryId]: enabled }));\n\n if (mode === 'inline') {\n return (\n <div className={className}>\n <CategoryList\n categories={categories}\n value={value ?? {}}\n onToggle={toggle}\n requiredLabel={labels.required}\n switchId={(name) => id('switch', name)}\n />\n </div>\n );\n }\n\n return (\n <>\n {mode === 'banner' && value === null && !preferencesOpen && (\n <section aria-labelledby={titleId} className={cn(cookieBannerStyles, className)}>\n <div className={cookieBannerContentStyles}>\n <RichText as=\"h2\" id={titleId} variant=\"s1\" className={cookieBannerTitleStyles}>\n {labels.title}\n </RichText>\n <RichText as=\"p\" variant=\"p3\" className={cookieTextStyles}>\n {labels.description}\n </RichText>\n <div className={cookieBannerActionsStyles}>\n <Button\n id={id('button', 'accept')}\n type=\"button\"\n className={cookieBannerButtonStyles}\n onClick={() => onChange(choicesFor(categories, true))}\n >\n {labels.accept}\n </Button>\n <Button\n id={id('button', 'reject')}\n type=\"button\"\n variant=\"secondary\"\n className={cookieBannerButtonStyles}\n onClick={() => onChange(choicesFor(categories, false))}\n >\n {labels.reject}\n </Button>\n <Button\n id={id('button', 'customize')}\n type=\"button\"\n variant=\"ghost\"\n className={cookieBannerButtonStyles}\n onClick={() => setOpen(true)}\n >\n {labels.customize}\n </Button>\n </div>\n </div>\n </section>\n )}\n <Modal\n open={preferencesOpen}\n onClose={() => setOpen(false)}\n title={labels.preferencesTitle}\n className={mode === 'modal' ? className : undefined}\n footer={\n <>\n <Button\n id={id('button', 'cancel')}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => setOpen(false)}\n >\n {labels.cancel}\n </Button>\n <Button\n id={id('button', 'save')}\n type=\"button\"\n onClick={() => {\n onChange(draft);\n setOpen(false);\n }}\n >\n {labels.save}\n </Button>\n </>\n }\n >\n {labels.preferencesDescription && (\n <RichText as=\"p\" variant=\"p3\" className={cookiePreferencesIntroStyles}>\n {labels.preferencesDescription}\n </RichText>\n )}\n <CategoryList\n categories={categories}\n value={draft}\n onToggle={toggle}\n requiredLabel={labels.required}\n switchId={(name) => id('switch', name)}\n />\n </Modal>\n </>\n );\n};\n"]}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { useDismissableLayer } from './chunk-JCJP427C.js';
|
|
2
|
+
import { selectStyles, selectChevronStyles } from './chunk-4H6VER5P.js';
|
|
3
|
+
import { inputLabelStyles, inputErrorStyles, inputHintStyles } from './chunk-FFKHEBQ7.js';
|
|
4
|
+
import { RichText } from './chunk-SPDOYFCU.js';
|
|
5
|
+
import { cn } from './chunk-6LLGTBM6.js';
|
|
6
|
+
import { forwardRef, useId, useRef, useState, useCallback, useEffect } from 'react';
|
|
7
|
+
import { cva } from 'class-variance-authority';
|
|
8
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
9
|
+
|
|
10
|
+
var dropdownTriggerStyles = "items-center text-left";
|
|
11
|
+
var dropdownValueStyles = "truncate";
|
|
12
|
+
var dropdownChevronStyles = "transition-transform duration-150 ease-out";
|
|
13
|
+
var dropdownListStyles = [
|
|
14
|
+
"absolute left-0 right-0 top-full z-50 mt-1 max-h-60 overflow-y-auto p-1",
|
|
15
|
+
"rounded-md border border-[var(--input-border)] bg-[var(--input-bg)] shadow-lg",
|
|
16
|
+
"focus:outline-none"
|
|
17
|
+
].join(" ");
|
|
18
|
+
var dropdownOptionStyles = cva(
|
|
19
|
+
"flex min-h-10 cursor-pointer items-center justify-between gap-3 rounded px-3 text-[var(--input-text)]",
|
|
20
|
+
{
|
|
21
|
+
variants: {
|
|
22
|
+
active: {
|
|
23
|
+
true: "bg-[var(--btn-primary-bg)] text-[var(--btn-primary-text)]",
|
|
24
|
+
false: ""
|
|
25
|
+
},
|
|
26
|
+
selected: {
|
|
27
|
+
true: "font-semibold",
|
|
28
|
+
false: ""
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
defaultVariants: {
|
|
32
|
+
active: false,
|
|
33
|
+
selected: false
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
var dropdownCheckStyles = "size-4 shrink-0";
|
|
38
|
+
var Dropdown = forwardRef(
|
|
39
|
+
({
|
|
40
|
+
label,
|
|
41
|
+
options,
|
|
42
|
+
value,
|
|
43
|
+
onChange,
|
|
44
|
+
hint,
|
|
45
|
+
error,
|
|
46
|
+
disabled,
|
|
47
|
+
id: idProp,
|
|
48
|
+
name,
|
|
49
|
+
inputSize,
|
|
50
|
+
state,
|
|
51
|
+
className
|
|
52
|
+
}, ref) => {
|
|
53
|
+
const generatedId = useId();
|
|
54
|
+
const id = idProp ?? generatedId;
|
|
55
|
+
const labelId = `${id}-label`;
|
|
56
|
+
const listId = `${id}-listbox`;
|
|
57
|
+
const containerRef = useRef(null);
|
|
58
|
+
const listRef = useRef(null);
|
|
59
|
+
const [open, setOpen] = useState(false);
|
|
60
|
+
const selectedIndex = Math.max(
|
|
61
|
+
0,
|
|
62
|
+
options.findIndex((option) => option.value === value)
|
|
63
|
+
);
|
|
64
|
+
const [activeIndex, setActiveIndex] = useState(selectedIndex);
|
|
65
|
+
const last = options.length - 1;
|
|
66
|
+
const resolvedState = error ? "error" : state;
|
|
67
|
+
const close = useCallback(() => setOpen(false), []);
|
|
68
|
+
useDismissableLayer(open, close, containerRef);
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (open) {
|
|
71
|
+
listRef.current?.children[activeIndex]?.scrollIntoView?.({ block: "nearest" });
|
|
72
|
+
}
|
|
73
|
+
}, [open, activeIndex]);
|
|
74
|
+
const openAt = (index) => {
|
|
75
|
+
setActiveIndex(index);
|
|
76
|
+
setOpen(true);
|
|
77
|
+
};
|
|
78
|
+
const choose = (index) => {
|
|
79
|
+
const option = options[index];
|
|
80
|
+
if (option && option.value !== value) {
|
|
81
|
+
onChange(option.value);
|
|
82
|
+
}
|
|
83
|
+
setOpen(false);
|
|
84
|
+
};
|
|
85
|
+
const indexForLetter = (key) => {
|
|
86
|
+
const start = (open ? activeIndex : selectedIndex) + 1;
|
|
87
|
+
const ordered = [...options.slice(start), ...options.slice(0, start)];
|
|
88
|
+
const match = ordered.find(
|
|
89
|
+
(option) => option.label.toLowerCase().startsWith(key.toLowerCase())
|
|
90
|
+
);
|
|
91
|
+
return match ? options.indexOf(match) : -1;
|
|
92
|
+
};
|
|
93
|
+
const openKeys = {
|
|
94
|
+
ArrowDown: () => setActiveIndex((index) => Math.min(last, index + 1)),
|
|
95
|
+
ArrowUp: () => setActiveIndex((index) => Math.max(0, index - 1)),
|
|
96
|
+
Home: () => setActiveIndex(0),
|
|
97
|
+
End: () => setActiveIndex(last),
|
|
98
|
+
Enter: () => choose(activeIndex),
|
|
99
|
+
" ": () => choose(activeIndex),
|
|
100
|
+
Escape: close
|
|
101
|
+
};
|
|
102
|
+
const closedKeys = {
|
|
103
|
+
ArrowDown: () => openAt(selectedIndex),
|
|
104
|
+
ArrowUp: () => openAt(selectedIndex),
|
|
105
|
+
Home: () => openAt(0),
|
|
106
|
+
End: () => openAt(last),
|
|
107
|
+
Enter: () => openAt(selectedIndex),
|
|
108
|
+
" ": () => openAt(selectedIndex)
|
|
109
|
+
};
|
|
110
|
+
const handleKeyDown = (event) => {
|
|
111
|
+
if (event.key === "Tab") {
|
|
112
|
+
close();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const action = (open ? openKeys : closedKeys)[event.key];
|
|
116
|
+
if (action) {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
action();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (event.key.length === 1 && event.key.trim() !== "") {
|
|
122
|
+
const index = indexForLetter(event.key);
|
|
123
|
+
if (index >= 0 && open) {
|
|
124
|
+
setActiveIndex(index);
|
|
125
|
+
} else if (index >= 0) {
|
|
126
|
+
choose(index);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1.5", className), children: [
|
|
131
|
+
/* @__PURE__ */ jsx(RichText, { as: "span", id: labelId, variant: "p3", className: inputLabelStyles, children: label }),
|
|
132
|
+
/* @__PURE__ */ jsxs("div", { ref: containerRef, className: "relative", children: [
|
|
133
|
+
/* @__PURE__ */ jsx(
|
|
134
|
+
"button",
|
|
135
|
+
{
|
|
136
|
+
ref,
|
|
137
|
+
id,
|
|
138
|
+
type: "button",
|
|
139
|
+
role: "combobox",
|
|
140
|
+
"aria-haspopup": "listbox",
|
|
141
|
+
"aria-expanded": open,
|
|
142
|
+
"aria-controls": listId,
|
|
143
|
+
"aria-labelledby": `${labelId} ${id}`,
|
|
144
|
+
"aria-activedescendant": open ? `${id}-option-${activeIndex}` : void 0,
|
|
145
|
+
"aria-describedby": error ? `${id}-error` : hint ? `${id}-hint` : void 0,
|
|
146
|
+
"aria-invalid": error ? "true" : void 0,
|
|
147
|
+
disabled,
|
|
148
|
+
onClick: () => open ? close() : openAt(selectedIndex),
|
|
149
|
+
onKeyDown: handleKeyDown,
|
|
150
|
+
className: cn(selectStyles({ state: resolvedState, inputSize }), dropdownTriggerStyles),
|
|
151
|
+
children: /* @__PURE__ */ jsx(RichText, { as: "span", variant: "s3", className: cn(dropdownValueStyles, "text-inherit"), children: options[selectedIndex]?.label })
|
|
152
|
+
}
|
|
153
|
+
),
|
|
154
|
+
/* @__PURE__ */ jsx(
|
|
155
|
+
"svg",
|
|
156
|
+
{
|
|
157
|
+
"aria-hidden": true,
|
|
158
|
+
viewBox: "0 0 24 24",
|
|
159
|
+
fill: "none",
|
|
160
|
+
stroke: "currentColor",
|
|
161
|
+
strokeWidth: 2,
|
|
162
|
+
strokeLinecap: "round",
|
|
163
|
+
strokeLinejoin: "round",
|
|
164
|
+
className: cn(selectChevronStyles, dropdownChevronStyles, open && "rotate-180"),
|
|
165
|
+
children: /* @__PURE__ */ jsx("path", { d: "m6 9 6 6 6-6" })
|
|
166
|
+
}
|
|
167
|
+
),
|
|
168
|
+
name && /* @__PURE__ */ jsx("input", { type: "hidden", name, value }),
|
|
169
|
+
/* @__PURE__ */ jsx(
|
|
170
|
+
"ul",
|
|
171
|
+
{
|
|
172
|
+
ref: listRef,
|
|
173
|
+
id: listId,
|
|
174
|
+
role: "listbox",
|
|
175
|
+
"aria-labelledby": labelId,
|
|
176
|
+
tabIndex: -1,
|
|
177
|
+
hidden: !open,
|
|
178
|
+
className: dropdownListStyles,
|
|
179
|
+
children: options.map((option, index) => {
|
|
180
|
+
const selected = index === selectedIndex;
|
|
181
|
+
return (
|
|
182
|
+
// Options never take focus (APG select-only combobox): the trigger handles the keys.
|
|
183
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events
|
|
184
|
+
/* @__PURE__ */ jsxs(
|
|
185
|
+
"li",
|
|
186
|
+
{
|
|
187
|
+
id: `${id}-option-${index}`,
|
|
188
|
+
role: "option",
|
|
189
|
+
"aria-selected": selected,
|
|
190
|
+
onPointerDown: (event) => event.preventDefault(),
|
|
191
|
+
onPointerEnter: () => setActiveIndex(index),
|
|
192
|
+
onClick: () => choose(index),
|
|
193
|
+
className: dropdownOptionStyles({ active: index === activeIndex, selected }),
|
|
194
|
+
children: [
|
|
195
|
+
/* @__PURE__ */ jsx(RichText, { as: "span", variant: "s3", className: "text-inherit", children: option.label }),
|
|
196
|
+
selected && /* @__PURE__ */ jsx(
|
|
197
|
+
"svg",
|
|
198
|
+
{
|
|
199
|
+
"aria-hidden": true,
|
|
200
|
+
viewBox: "0 0 24 24",
|
|
201
|
+
fill: "none",
|
|
202
|
+
stroke: "currentColor",
|
|
203
|
+
strokeWidth: 2.5,
|
|
204
|
+
strokeLinecap: "round",
|
|
205
|
+
strokeLinejoin: "round",
|
|
206
|
+
className: dropdownCheckStyles,
|
|
207
|
+
children: /* @__PURE__ */ jsx("path", { d: "M5 12l5 5 9-10" })
|
|
208
|
+
}
|
|
209
|
+
)
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
option.value
|
|
213
|
+
)
|
|
214
|
+
);
|
|
215
|
+
})
|
|
216
|
+
}
|
|
217
|
+
)
|
|
218
|
+
] }),
|
|
219
|
+
error && /* @__PURE__ */ jsx(
|
|
220
|
+
RichText,
|
|
221
|
+
{
|
|
222
|
+
as: "p",
|
|
223
|
+
id: `${id}-error`,
|
|
224
|
+
role: "alert",
|
|
225
|
+
variant: "p4",
|
|
226
|
+
className: inputErrorStyles,
|
|
227
|
+
children: error
|
|
228
|
+
}
|
|
229
|
+
),
|
|
230
|
+
!error && hint && /* @__PURE__ */ jsx(RichText, { as: "p", id: `${id}-hint`, variant: "p4", className: inputHintStyles, children: hint })
|
|
231
|
+
] });
|
|
232
|
+
}
|
|
233
|
+
);
|
|
234
|
+
Dropdown.displayName = "Dropdown";
|
|
235
|
+
|
|
236
|
+
export { Dropdown };
|
|
237
|
+
//# sourceMappingURL=chunk-XUGSIK2P.js.map
|
|
238
|
+
//# sourceMappingURL=chunk-XUGSIK2P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/molecules/Dropdown/Dropdown.styles.ts","../src/components/molecules/Dropdown/Dropdown.tsx"],"names":[],"mappings":"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","file":"chunk-XUGSIK2P.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const dropdownTriggerStyles = 'items-center text-left';\n\nexport const dropdownValueStyles = 'truncate';\n\nexport const dropdownChevronStyles = 'transition-transform duration-150 ease-out';\n\nexport const dropdownListStyles = [\n 'absolute left-0 right-0 top-full z-50 mt-1 max-h-60 overflow-y-auto p-1',\n 'rounded-md border border-[var(--input-border)] bg-[var(--input-bg)] shadow-lg',\n 'focus:outline-none',\n].join(' ');\n\nexport const dropdownOptionStyles = cva(\n 'flex min-h-10 cursor-pointer items-center justify-between gap-3 rounded px-3 text-[var(--input-text)]',\n {\n variants: {\n active: {\n true: 'bg-[var(--btn-primary-bg)] text-[var(--btn-primary-text)]',\n false: '',\n },\n selected: {\n true: 'font-semibold',\n false: '',\n },\n },\n defaultVariants: {\n active: false,\n selected: false,\n },\n },\n);\n\nexport const dropdownCheckStyles = 'size-4 shrink-0';\n","import { RichText } from '@components';\nimport { useDismissableLayer } from '@hooks';\nimport { cn } from '@utils';\nimport type { VariantProps } from 'class-variance-authority';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n type KeyboardEvent,\n} from 'react';\nimport {\n inputErrorStyles,\n inputHintStyles,\n inputLabelStyles,\n} from '@components/atoms/Input/Input.styles';\nimport { selectChevronStyles, selectStyles } from '@components/atoms/Select/Select.styles';\nimport {\n dropdownCheckStyles,\n dropdownChevronStyles,\n dropdownListStyles,\n dropdownOptionStyles,\n dropdownTriggerStyles,\n dropdownValueStyles,\n} from './Dropdown.styles';\n\nexport interface DropdownOption {\n value: string;\n label: string;\n}\n\nexport type DropdownProps = VariantProps<typeof selectStyles> & {\n label: string;\n options: DropdownOption[];\n value: string;\n onChange: (value: string) => void;\n hint?: string;\n error?: string;\n disabled?: boolean;\n id?: string;\n name?: string;\n className?: string;\n};\n\n/**\n * A select whose list is drawn with the theme (a native `<select>` opens the platform picker).\n * WAI-ARIA \"select-only combobox\": focus stays on the trigger and the active option is announced\n * through `aria-activedescendant`; arrows, Home/End, Enter/Space, Escape and typing a letter behave\n * like a native select.\n */\nexport const Dropdown = forwardRef<HTMLButtonElement, DropdownProps>(\n (\n {\n label,\n options,\n value,\n onChange,\n hint,\n error,\n disabled,\n id: idProp,\n name,\n inputSize,\n state,\n className,\n },\n ref,\n ) => {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const labelId = `${id}-label`;\n const listId = `${id}-listbox`;\n const containerRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLUListElement>(null);\n const [open, setOpen] = useState(false);\n const selectedIndex = Math.max(\n 0,\n options.findIndex((option) => option.value === value),\n );\n const [activeIndex, setActiveIndex] = useState(selectedIndex);\n const last = options.length - 1;\n const resolvedState = error ? 'error' : state;\n\n const close = useCallback(() => setOpen(false), []);\n useDismissableLayer(open, close, containerRef);\n\n useEffect(() => {\n if (open) {\n listRef.current?.children[activeIndex]?.scrollIntoView?.({ block: 'nearest' });\n }\n }, [open, activeIndex]);\n\n const openAt = (index: number) => {\n setActiveIndex(index);\n setOpen(true);\n };\n\n const choose = (index: number) => {\n const option = options[index];\n if (option && option.value !== value) {\n onChange(option.value);\n }\n setOpen(false);\n };\n\n const indexForLetter = (key: string) => {\n const start = (open ? activeIndex : selectedIndex) + 1;\n const ordered = [...options.slice(start), ...options.slice(0, start)];\n const match = ordered.find((option) =>\n option.label.toLowerCase().startsWith(key.toLowerCase()),\n );\n return match ? options.indexOf(match) : -1;\n };\n\n const openKeys: Record<string, () => void> = {\n ArrowDown: () => setActiveIndex((index) => Math.min(last, index + 1)),\n ArrowUp: () => setActiveIndex((index) => Math.max(0, index - 1)),\n Home: () => setActiveIndex(0),\n End: () => setActiveIndex(last),\n Enter: () => choose(activeIndex),\n ' ': () => choose(activeIndex),\n Escape: close,\n };\n\n const closedKeys: Record<string, () => void> = {\n ArrowDown: () => openAt(selectedIndex),\n ArrowUp: () => openAt(selectedIndex),\n Home: () => openAt(0),\n End: () => openAt(last),\n Enter: () => openAt(selectedIndex),\n ' ': () => openAt(selectedIndex),\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n if (event.key === 'Tab') {\n close();\n return;\n }\n const action = (open ? openKeys : closedKeys)[event.key];\n if (action) {\n event.preventDefault();\n action();\n return;\n }\n if (event.key.length === 1 && event.key.trim() !== '') {\n const index = indexForLetter(event.key);\n if (index >= 0 && open) {\n setActiveIndex(index);\n } else if (index >= 0) {\n choose(index);\n }\n }\n };\n\n return (\n <div className={cn('flex flex-col gap-1.5', className)}>\n <RichText as=\"span\" id={labelId} variant=\"p3\" className={inputLabelStyles}>\n {label}\n </RichText>\n <div ref={containerRef} className=\"relative\">\n <button\n ref={ref}\n id={id}\n type=\"button\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={listId}\n aria-labelledby={`${labelId} ${id}`}\n aria-activedescendant={open ? `${id}-option-${activeIndex}` : undefined}\n aria-describedby={error ? `${id}-error` : hint ? `${id}-hint` : undefined}\n aria-invalid={error ? 'true' : undefined}\n disabled={disabled}\n onClick={() => (open ? close() : openAt(selectedIndex))}\n onKeyDown={handleKeyDown}\n className={cn(selectStyles({ state: resolvedState, inputSize }), dropdownTriggerStyles)}\n >\n <RichText as=\"span\" variant=\"s3\" className={cn(dropdownValueStyles, 'text-inherit')}>\n {options[selectedIndex]?.label}\n </RichText>\n </button>\n <svg\n aria-hidden\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(selectChevronStyles, dropdownChevronStyles, open && 'rotate-180')}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n {name && <input type=\"hidden\" name={name} value={value} />}\n <ul\n ref={listRef}\n id={listId}\n role=\"listbox\"\n aria-labelledby={labelId}\n tabIndex={-1}\n hidden={!open}\n className={dropdownListStyles}\n >\n {options.map((option, index) => {\n const selected = index === selectedIndex;\n return (\n // Options never take focus (APG select-only combobox): the trigger handles the keys.\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <li\n key={option.value}\n id={`${id}-option-${index}`}\n role=\"option\"\n aria-selected={selected}\n onPointerDown={(event) => event.preventDefault()}\n onPointerEnter={() => setActiveIndex(index)}\n onClick={() => choose(index)}\n className={dropdownOptionStyles({ active: index === activeIndex, selected })}\n >\n <RichText as=\"span\" variant=\"s3\" className=\"text-inherit\">\n {option.label}\n </RichText>\n {selected && (\n <svg\n aria-hidden\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2.5}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={dropdownCheckStyles}\n >\n <path d=\"M5 12l5 5 9-10\" />\n </svg>\n )}\n </li>\n );\n })}\n </ul>\n </div>\n {error && (\n <RichText\n as=\"p\"\n id={`${id}-error`}\n role=\"alert\"\n variant=\"p4\"\n className={inputErrorStyles}\n >\n {error}\n </RichText>\n )}\n {!error && hint && (\n <RichText as=\"p\" id={`${id}-hint`} variant=\"p4\" className={inputHintStyles}>\n {hint}\n </RichText>\n )}\n </div>\n );\n },\n);\n\nDropdown.displayName = 'Dropdown';\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RichText } from './chunk-
|
|
1
|
+
import { RichText } from './chunk-SPDOYFCU.js';
|
|
2
2
|
import { cn } from './chunk-6LLGTBM6.js';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -67,5 +67,5 @@ var CardFooter = forwardRef(
|
|
|
67
67
|
CardFooter.displayName = "CardFooter";
|
|
68
68
|
|
|
69
69
|
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
70
|
-
//# sourceMappingURL=chunk-
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-ZH2EDGW6.js.map
|
|
71
|
+
//# sourceMappingURL=chunk-ZH2EDGW6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/molecules/Card/Card.styles.ts","../src/components/molecules/Card/Card.tsx"],"names":[],"mappings":";;;;;;AAEO,IAAM,UAAA,GAAa,GAAA;AAAA,EACxB,CAAC,kFAAkF,WAAW,CAAA;AAAA,EAC9F;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,gBAAA,GAAmB,2BAAA;AAEzB,IAAM,eAAA,GAAkB,+DAAA;AAExB,IAAM,qBAAA,GAAwB,sCAAA;AAE9B,IAAM,iBAAA,GAAoB,WAAA;AAE1B,IAAM,gBAAA,GAAmB,6BAAA;ACTzB,IAAM,IAAA,GAAO,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,SAAA,GAAY,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC3C,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,UAAA,CAAW,EAAE,OAAA,EAAS,CAAC,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE7F;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAIZ,IAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE1E;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAMlB,IAAM,SAAA,GAAY,UAAA;AAAA,EACvB,CAAC,EAAE,SAAA,EAAW,EAAA,GAAK,MAAM,GAAG,KAAA,IAAS,GAAA,qBACnC,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,MACvC,GAAG;AAAA;AAAA;AAGV;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAIjB,IAAM,eAAA,GAAkB,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAG,GAAA;AAAA,MACH,OAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC7C,GAAG;AAAA;AAAA;AAGV;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAIvB,IAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE3E;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAInB,IAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE1E;AACA,UAAA,CAAW,WAAA,GAAc,YAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/molecules/Card/Card.styles.ts","../src/components/molecules/Card/Card.tsx"],"names":[],"mappings":";;;;;;AAEO,IAAM,UAAA,GAAa,GAAA;AAAA,EACxB,CAAC,kFAAkF,WAAW,CAAA;AAAA,EAC9F;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,gBAAA,GAAmB,2BAAA;AAEzB,IAAM,eAAA,GAAkB,+DAAA;AAExB,IAAM,qBAAA,GAAwB,sCAAA;AAE9B,IAAM,iBAAA,GAAoB,WAAA;AAE1B,IAAM,gBAAA,GAAmB,6BAAA;ACTzB,IAAM,IAAA,GAAO,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,SAAA,GAAY,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC3C,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,UAAA,CAAW,EAAE,OAAA,EAAS,CAAC,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE7F;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAIZ,IAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE1E;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAMlB,IAAM,SAAA,GAAY,UAAA;AAAA,EACvB,CAAC,EAAE,SAAA,EAAW,EAAA,GAAK,MAAM,GAAG,KAAA,IAAS,GAAA,qBACnC,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,MACvC,GAAG;AAAA;AAAA;AAGV;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAIjB,IAAM,eAAA,GAAkB,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAG,GAAA;AAAA,MACH,OAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC7C,GAAG;AAAA;AAAA;AAGV;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAIvB,IAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE3E;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAInB,IAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE1E;AACA,UAAA,CAAW,WAAA,GAAc,YAAA","file":"chunk-ZH2EDGW6.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const cardStyles = cva(\n ['rounded-xl border border-[var(--border-default)] bg-[var(--surface-secondary)]', 'shadow-sm'],\n {\n variants: {\n padding: {\n true: 'p-6',\n false: '',\n },\n },\n defaultVariants: {\n padding: true,\n },\n },\n);\n\nexport const cardHeaderStyles = 'flex flex-col gap-1.5 p-6';\n\nexport const cardTitleStyles = 'text-lg font-semibold leading-none text-[var(--text-primary)]';\n\nexport const cardDescriptionStyles = 'text-sm text-[var(--text-secondary)]';\n\nexport const cardContentStyles = 'px-6 pb-6';\n\nexport const cardFooterStyles = 'flex items-center px-6 pb-6';\n","import { RichText } from '@components';\nimport { cn } from '@utils';\nimport { forwardRef, type ForwardedRef, type HTMLAttributes } from 'react';\nimport {\n cardContentStyles,\n cardDescriptionStyles,\n cardFooterStyles,\n cardHeaderStyles,\n cardStyles,\n cardTitleStyles,\n} from './Card.styles';\n\nexport type CardProps = HTMLAttributes<HTMLDivElement> & {\n noPadding?: boolean;\n};\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n ({ className, noPadding = false, ...props }, ref) => (\n <div ref={ref} className={cn(cardStyles({ padding: !noPadding }), className)} {...props} />\n ),\n);\nCard.displayName = 'Card';\n\nexport type CardHeaderProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(cardHeaderStyles, className)} {...props} />\n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nexport type CardTitleProps = HTMLAttributes<HTMLHeadingElement> & {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n};\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, CardTitleProps>(\n ({ className, as = 'h3', ...props }, ref) => (\n <RichText\n ref={ref as ForwardedRef<HTMLElement>}\n as={as}\n variant=\"s1\"\n className={cn(cardTitleStyles, className)}\n {...props}\n />\n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nexport type CardDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <RichText\n ref={ref as ForwardedRef<HTMLElement>}\n as=\"p\"\n variant=\"p3\"\n className={cn(cardDescriptionStyles, className)}\n {...props}\n />\n ),\n);\nCardDescription.displayName = 'CardDescription';\n\nexport type CardContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(cardContentStyles, className)} {...props} />\n ),\n);\nCardContent.displayName = 'CardContent';\n\nexport type CardFooterProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(cardFooterStyles, className)} {...props} />\n ),\n);\nCardFooter.displayName = 'CardFooter';\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { Input } from '../../../chunk-
|
|
1
|
+
export { Input } from '../../../chunk-IY452YEX.js';
|
|
2
2
|
import '../../../chunk-FFKHEBQ7.js';
|
|
3
|
-
import '../../../chunk-
|
|
3
|
+
import '../../../chunk-SPDOYFCU.js';
|
|
4
4
|
import '../../../chunk-6LLGTBM6.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,11 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { SelectHTMLAttributes } from 'react';
|
|
3
3
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
4
4
|
import { VariantProps } from 'class-variance-authority';
|
|
5
|
-
|
|
6
|
-
declare const selectStyles: (props?: ({
|
|
7
|
-
state?: "error" | "default" | null | undefined;
|
|
8
|
-
inputSize?: "sm" | "md" | "lg" | null | undefined;
|
|
9
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
5
|
+
import { s as selectStyles } from '../../../Select.styles-CeZROqOk.js';
|
|
10
6
|
|
|
11
7
|
type SelectProps = SelectHTMLAttributes<HTMLSelectElement> & VariantProps<typeof selectStyles> & {
|
|
12
8
|
label?: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export { Select } from '../../../chunk-
|
|
1
|
+
export { Select } from '../../../chunk-DIA7L6IA.js';
|
|
2
|
+
import '../../../chunk-4H6VER5P.js';
|
|
2
3
|
import '../../../chunk-FFKHEBQ7.js';
|
|
3
|
-
import '../../../chunk-
|
|
4
|
+
import '../../../chunk-SPDOYFCU.js';
|
|
4
5
|
import '../../../chunk-6LLGTBM6.js';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Switch } from '../../../chunk-
|
|
2
|
-
import '../../../chunk-
|
|
1
|
+
export { Switch } from '../../../chunk-KSNAVEJP.js';
|
|
2
|
+
import '../../../chunk-SPDOYFCU.js';
|
|
3
3
|
import '../../../chunk-6LLGTBM6.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { Textarea } from '../../../chunk-
|
|
1
|
+
export { Textarea } from '../../../chunk-UUW7L2AV.js';
|
|
2
2
|
import '../../../chunk-FFKHEBQ7.js';
|
|
3
|
-
import '../../../chunk-
|
|
3
|
+
import '../../../chunk-SPDOYFCU.js';
|
|
4
4
|
import '../../../chunk-6LLGTBM6.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { BottomSheet } from '../../../chunk-
|
|
1
|
+
export { BottomSheet } from '../../../chunk-NTXFFBL6.js';
|
|
2
2
|
import '../../../chunk-QT62VC36.js';
|
|
3
3
|
import '../../../chunk-53YMHM24.js';
|
|
4
|
-
import '../../../chunk-BNEEI7S5.js';
|
|
5
4
|
import '../../../chunk-JCJP427C.js';
|
|
5
|
+
import '../../../chunk-BNEEI7S5.js';
|
|
6
6
|
import '../../../chunk-P4Z7HH66.js';
|
|
7
|
-
import '../../../chunk-
|
|
7
|
+
import '../../../chunk-SPDOYFCU.js';
|
|
8
8
|
import '../../../chunk-6LLGTBM6.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
10
10
|
//# sourceMappingURL=index.js.map
|