@enya-learning/nova 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -16
- package/dist/chunks/dist-fahbq1psobj0ox6s.js +1327 -0
- package/dist/chunks/dist-fahbq1psobj0ox6s.js.map +1 -0
- package/dist/chunks/dist-o8x0ip0z71xkr2oh.js +37 -0
- package/dist/chunks/dist-o8x0ip0z71xkr2oh.js.map +1 -0
- package/dist/components/accordion.js +59 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.js +108 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.js +49 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.js +16 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.js +58 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.js +33 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.js +81 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-group.js +47 -0
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.js +48 -3
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.js +3000 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.js +65 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.js +1191 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.js +10596 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.js +22 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.js +28 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.js +179 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.js +656 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.js +149 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/dialog.js +103 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/direction.js +6 -0
- package/dist/components/drawer.js +1042 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.js +153 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/empty.js +67 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/enya-logo.js +42 -42
- package/dist/components/enya-logo.js.map +1 -1
- package/dist/components/field.js +119 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/hover-card.js +40 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.js +85 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input-otp.js +416 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.js +18 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/item.js +133 -0
- package/dist/components/item.js.map +1 -0
- package/dist/components/kbd.js +23 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.js +16 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/menubar.js +153 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/native-select.js +43 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.js +93 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.js +95 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.js +62 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.js +50 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.js +30 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.js +1562 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scroll-area.js +40 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.js +109 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.js +17 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/sheet.js +98 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.js +395 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.js +15 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.js +36 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/sonner.js +722 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/spinner.js +17 -0
- package/dist/components/spinner.js.map +1 -0
- package/dist/components/switch.js +21 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.js +76 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.js +51 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.js +16 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toggle-group.js +55 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.js +39 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/tooltip.js +46 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.js +17 -23241
- package/dist/src/components/badge/badge.d.ts +1 -1
- package/dist/src/components/button/button.d.ts +1 -1
- package/dist/src/components/item/item.d.ts +1 -1
- package/dist/src/components/tabs/tabs.d.ts +1 -1
- package/dist/src/index.d.ts +1 -53
- package/dist/styles/nova-binding.css +102 -0
- package/dist/styles/nova.css +106 -48
- package/dist/styles/theme-nova.css +77 -81
- package/dist/styles/typography.css +34 -22
- package/package.json +30 -9
- package/src/eslint/no-primitive-colors.test.ts +97 -0
- package/dist/chunks/button-kvgr8g13fe959ju0.js +0 -81
- package/dist/chunks/button-kvgr8g13fe959ju0.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/styles/globals.css +0 -77
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { t as g } from "../chunks/utils-kyb5nny4y41y7hd8.js";
|
|
3
3
|
import { jsx as r, jsxs as c } from "react/jsx-runtime";
|
|
4
4
|
import { forwardRef as b } from "react";
|
|
5
|
-
var m = "
|
|
5
|
+
var m = "var(--colour-enya-yellow)", L = "var(--colour-enya-black)", t = "var(--colour-enya-white)", v = "M100 0H6.10352e-05V99.9883H100V0Z", s = [
|
|
6
6
|
"M83.3042 52.7379V63.7362L73.7887 69.2236L64.2733 74.7227V63.7362L83.3042 52.7379Z",
|
|
7
7
|
"M45.2424 52.7379V63.7362L26.2114 52.7379V41.7513L45.2424 52.7379Z",
|
|
8
8
|
"M45.2423 74.7226V85.7092L35.7269 80.2101L26.2114 74.7226L16.6959 69.2235V47.2504L26.2114 52.7378V63.7361L45.2423 74.7226Z",
|
|
@@ -78,111 +78,111 @@ var m = "#FFBB00", L = "#151515", t = "#F5F5F5", s = "M100 0H6.10352e-05V99.9883
|
|
|
78
78
|
variant: "full",
|
|
79
79
|
orientation: "horizontal",
|
|
80
80
|
color: "primary"
|
|
81
|
-
},
|
|
81
|
+
}, u = b(({ variant: e = w.variant, orientation: M = w.orientation, color: H = w.color, className: o, ...i }, n) => {
|
|
82
82
|
const l = H === "primary" ? m : H === "black" ? L : t, C = H === "black" ? t : L, Z = H === "black" ? t : L;
|
|
83
83
|
return e === "icon" ? /* @__PURE__ */ c("svg", {
|
|
84
|
-
ref:
|
|
84
|
+
ref: n,
|
|
85
85
|
viewBox: "0 0 100 100",
|
|
86
86
|
fill: "none",
|
|
87
87
|
xmlns: "http://www.w3.org/2000/svg",
|
|
88
88
|
role: "img",
|
|
89
89
|
"aria-label": "Enya Learning logo",
|
|
90
|
-
className: g(
|
|
91
|
-
...
|
|
90
|
+
className: g(o),
|
|
91
|
+
...i,
|
|
92
92
|
children: [/* @__PURE__ */ r("path", {
|
|
93
|
-
d:
|
|
93
|
+
d: v,
|
|
94
94
|
fill: l
|
|
95
|
-
}),
|
|
96
|
-
d:
|
|
95
|
+
}), s.map((a, V) => /* @__PURE__ */ r("path", {
|
|
96
|
+
d: a,
|
|
97
97
|
fill: C
|
|
98
|
-
},
|
|
98
|
+
}, V))]
|
|
99
99
|
}) : e === "wordmark" ? /* @__PURE__ */ r("svg", {
|
|
100
|
-
ref:
|
|
100
|
+
ref: n,
|
|
101
101
|
viewBox: "0 0 350 53",
|
|
102
102
|
fill: "none",
|
|
103
103
|
xmlns: "http://www.w3.org/2000/svg",
|
|
104
104
|
role: "img",
|
|
105
105
|
"aria-label": "Enya Learning wordmark",
|
|
106
|
-
className: g(
|
|
107
|
-
...
|
|
108
|
-
children: d.map((
|
|
109
|
-
d:
|
|
106
|
+
className: g(o),
|
|
107
|
+
...i,
|
|
108
|
+
children: d.map((a, V) => /* @__PURE__ */ r("path", {
|
|
109
|
+
d: a,
|
|
110
110
|
fill: Z
|
|
111
|
-
},
|
|
111
|
+
}, V))
|
|
112
112
|
}) : M === "vertical" ? /* @__PURE__ */ c("svg", {
|
|
113
|
-
ref:
|
|
113
|
+
ref: n,
|
|
114
114
|
viewBox: "0 0 150 66",
|
|
115
115
|
fill: "none",
|
|
116
116
|
xmlns: "http://www.w3.org/2000/svg",
|
|
117
117
|
role: "img",
|
|
118
118
|
"aria-label": "Enya Learning logo",
|
|
119
|
-
className: g(
|
|
120
|
-
...
|
|
119
|
+
className: g(o),
|
|
120
|
+
...i,
|
|
121
121
|
children: [
|
|
122
122
|
/* @__PURE__ */ r("path", {
|
|
123
123
|
d: _,
|
|
124
124
|
fill: l
|
|
125
125
|
}),
|
|
126
|
-
k.map((
|
|
127
|
-
d:
|
|
126
|
+
k.map((a, V) => /* @__PURE__ */ r("path", {
|
|
127
|
+
d: a,
|
|
128
128
|
fill: C
|
|
129
|
-
},
|
|
130
|
-
A.map((
|
|
131
|
-
d:
|
|
129
|
+
}, V)),
|
|
130
|
+
A.map((a, V) => /* @__PURE__ */ r("path", {
|
|
131
|
+
d: a,
|
|
132
132
|
fill: Z
|
|
133
|
-
},
|
|
133
|
+
}, V))
|
|
134
134
|
]
|
|
135
135
|
}) : /* @__PURE__ */ c("svg", {
|
|
136
|
-
ref:
|
|
136
|
+
ref: n,
|
|
137
137
|
viewBox: "0 0 150 27",
|
|
138
138
|
fill: "none",
|
|
139
139
|
xmlns: "http://www.w3.org/2000/svg",
|
|
140
140
|
role: "img",
|
|
141
141
|
"aria-label": "Enya Learning logo",
|
|
142
|
-
className: g(
|
|
143
|
-
...
|
|
142
|
+
className: g(o),
|
|
143
|
+
...i,
|
|
144
144
|
children: [
|
|
145
145
|
/* @__PURE__ */ r("path", {
|
|
146
146
|
d: p,
|
|
147
147
|
fill: l
|
|
148
148
|
}),
|
|
149
|
-
f.map((
|
|
150
|
-
d:
|
|
149
|
+
f.map((a, V) => /* @__PURE__ */ r("path", {
|
|
150
|
+
d: a,
|
|
151
151
|
fill: C
|
|
152
|
-
},
|
|
153
|
-
h.map((
|
|
154
|
-
d:
|
|
152
|
+
}, V)),
|
|
153
|
+
h.map((a, V) => /* @__PURE__ */ r("path", {
|
|
154
|
+
d: a,
|
|
155
155
|
fill: Z
|
|
156
|
-
},
|
|
156
|
+
}, V))
|
|
157
157
|
]
|
|
158
158
|
});
|
|
159
159
|
});
|
|
160
|
-
|
|
160
|
+
u.displayName = "EnyaLogo";
|
|
161
161
|
function N(e = {}) {
|
|
162
|
-
const { variant: M = "full", orientation: H = "horizontal", color:
|
|
162
|
+
const { variant: M = "full", orientation: H = "horizontal", color: o = "primary" } = e, i = o === "primary" ? m : o === "black" ? L : t, n = o === "black" ? t : L, l = o === "black" ? t : L;
|
|
163
163
|
return M === "icon" ? `<svg viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Enya Learning logo">
|
|
164
|
-
<path d="${
|
|
165
|
-
${
|
|
164
|
+
<path d="${v}" fill="${i}"/>
|
|
165
|
+
${s.map((C) => ` <path d="${C}" fill="${n}"/>`).join(`
|
|
166
166
|
`)}
|
|
167
167
|
</svg>` : M === "wordmark" ? `<svg viewBox="0 0 350 53" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Enya Learning wordmark">
|
|
168
168
|
${d.map((C) => ` <path d="${C}" fill="${l}"/>`).join(`
|
|
169
169
|
`)}
|
|
170
170
|
</svg>` : H === "vertical" ? `<svg viewBox="0 0 150 66" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Enya Learning logo">
|
|
171
|
-
<path d="${_}" fill="${
|
|
172
|
-
${k.map((C) => ` <path d="${C}" fill="${
|
|
171
|
+
<path d="${_}" fill="${i}"/>
|
|
172
|
+
${k.map((C) => ` <path d="${C}" fill="${n}"/>`).join(`
|
|
173
173
|
`)}
|
|
174
174
|
${A.map((C) => ` <path d="${C}" fill="${l}"/>`).join(`
|
|
175
175
|
`)}
|
|
176
176
|
</svg>` : `<svg viewBox="0 0 150 27" fill="none" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Enya Learning logo">
|
|
177
|
-
<path d="${p}" fill="${
|
|
178
|
-
${f.map((C) => ` <path d="${C}" fill="${
|
|
177
|
+
<path d="${p}" fill="${i}"/>
|
|
178
|
+
${f.map((C) => ` <path d="${C}" fill="${n}"/>`).join(`
|
|
179
179
|
`)}
|
|
180
180
|
${h.map((C) => ` <path d="${C}" fill="${l}"/>`).join(`
|
|
181
181
|
`)}
|
|
182
182
|
</svg>`;
|
|
183
183
|
}
|
|
184
184
|
export {
|
|
185
|
-
|
|
185
|
+
u as EnyaLogo,
|
|
186
186
|
w as NOVA_ENYA_LOGO_DEFAULT_VARIANTS,
|
|
187
187
|
E as NOVA_ENYA_LOGO_VARIANTS,
|
|
188
188
|
N as generateEnyaLogoSvg
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enya-logo.js","names":[],"sources":["../../src/components/enya-logo/enya-logo.tsx"],"sourcesContent":["import { forwardRef } from \"react\"\nimport { cn } from \"../../lib/utils\"\n\n// =============================================================================\n// Brand Colors (internal)\n// =============================================================================\n\nconst ENYA_PRIMARY = \"#FFBB00\"\nconst ENYA_DARK = \"#151515\"\nconst ENYA_LIGHT = \"#F5F5F5\"\n\n// =============================================================================\n// SVG Path Data (internal)\n// =============================================================================\n\n// Icon variant — viewBox: 0 0 100 100\nconst ICON_BG_PATH = \"M100 0H6.10352e-05V99.9883H100V0Z\"\nconst ICON_MARK_PATHS = [\n \"M83.3042 52.7379V63.7362L73.7887 69.2236L64.2733 74.7227V63.7362L83.3042 52.7379Z\",\n \"M45.2424 52.7379V63.7362L26.2114 52.7379V41.7513L45.2424 52.7379Z\",\n \"M45.2423 74.7226V85.7092L35.7269 80.2101L26.2114 74.7226L16.6959 69.2235V47.2504L26.2114 52.7378V63.7361L45.2423 74.7226Z\",\n \"M64.2732 19.7781V63.736L54.7578 69.2235V25.2772L64.2732 19.7781Z\",\n \"M45.2423 30.7648V41.7513L35.7269 36.2639L26.2114 30.7648V41.7513L16.6959 36.2639V14.2791L45.2423 30.7648Z\",\n]\n\n// Wordmark variant — viewBox: 0 0 350 53 (\"Enya learning\")\nconst WORDMARK_PATHS = [\n \"M0 0.399292H27.5779V7.24623H7.75986V16.7559H25.9042V23.4126H7.75986V33.664H27.9013V40.5109H0V0.399292Z\",\n \"M33.55 12.952H41.0246V15.5767C42.0716 14.5326 43.319 13.7112 44.6919 13.1621C46.0647 12.6129 47.5345 12.3474 49.0127 12.3814C51.8235 12.409 54.5096 13.5456 56.4865 15.5439C58.4634 17.5422 59.571 20.2403 59.5684 23.0512V40.5109H52.0938V24.6679C52.0938 23.2 51.5107 21.7923 50.4728 20.7543C49.4348 19.7164 48.0271 19.1333 46.5592 19.1333C45.0914 19.1333 43.6836 19.7164 42.6457 20.7543C41.6077 21.7923 41.0246 23.2 41.0246 24.6679V40.5109H33.55V12.952Z\",\n \"M71.95 38.1716L61.4894 12.952H69.6106L75.887 30.4688L82.4486 12.952H90.6079L78.3404 40.6821L73.3194 52.0366H65.3883L71.95 38.1716Z\",\n \"M91.5776 26.76C91.5776 18.6008 97.2834 12.3815 104.758 12.3815C106.245 12.3424 107.725 12.6055 109.108 13.1547C110.491 13.7039 111.748 14.5278 112.803 15.5767V12.9521H120.221V40.53H112.803V37.8863C111.756 38.9304 110.509 39.7518 109.136 40.3009C107.763 40.85 106.293 41.1156 104.815 41.0815C97.2834 41.0815 91.5776 34.9193 91.5776 26.76ZM113.164 26.703C113.164 22.3666 110.312 19.2855 106.146 19.2855C101.981 19.2855 99.1853 22.3666 99.1853 26.703C99.1853 31.0394 102.038 34.1775 106.146 34.1775C110.255 34.1775 113.164 31.0964 113.164 26.703Z\",\n \"M126.478 0.399292H134.238V33.6069H152.63V40.5109H126.478V0.399292Z\",\n \"M156.738 26.703C156.712 24.797 157.07 22.9054 157.79 21.1406C158.51 19.3759 159.579 17.7741 160.931 16.4307C162.283 15.0873 163.892 14.0298 165.661 13.3211C167.431 12.6124 169.325 12.2669 171.23 12.3054C179.104 12.3054 184.81 18.1253 184.81 26.0563C184.801 27.1521 184.667 28.2433 184.411 29.3086L164.269 29.4227C165.22 32.8462 167.864 34.8432 171.687 34.8432C172.958 34.8873 174.223 34.655 175.395 34.1625C176.567 33.6699 177.619 32.9288 178.477 31.9903L182.87 36.3838C181.473 37.9382 179.754 39.169 177.832 39.9903C175.911 40.8115 173.833 41.2034 171.744 41.1386C163.128 41.0815 156.738 35.0334 156.738 26.703ZM164.269 23.793H177.583C176.841 20.3695 174.673 18.5437 171.192 18.5437C169.612 18.4934 168.062 18.9874 166.802 19.9429C165.542 20.8983 164.648 22.2575 164.269 23.793Z\",\n \"M187.72 26.76C187.72 18.6008 193.426 12.3815 200.901 12.3815C202.388 12.3424 203.868 12.6055 205.251 13.1547C206.633 13.7039 207.89 14.5278 208.946 15.5767V12.9521H216.363V40.53H208.946V37.8863C207.899 38.9304 206.651 39.7518 205.278 40.3009C203.906 40.85 202.436 41.1156 200.958 41.0815C193.426 41.0815 187.72 34.9193 187.72 26.76ZM209.345 26.703C209.345 22.3666 206.492 19.2855 202.327 19.2855C198.162 19.2855 195.366 22.3666 195.366 26.703C195.366 31.0394 198.219 34.1775 202.327 34.1775C206.435 34.1775 209.345 31.0964 209.345 26.703Z\",\n \"M221.841 12.952H229.315V15.4055C230.198 14.3949 231.298 13.5977 232.534 13.0739C233.769 12.5501 235.107 12.3133 236.447 12.3814C237.671 12.3238 238.891 12.5437 240.018 13.0246C241.144 13.5054 242.147 14.2349 242.952 15.1582L238.273 20.5217C237.813 20.0571 237.26 19.695 236.651 19.459C236.041 19.223 235.388 19.1185 234.736 19.1523C231.483 19.1523 229.315 21.1493 229.315 25.2575V40.4729H221.841V12.952Z\",\n \"M246.604 12.952H254.078V15.5767C255.125 14.5326 256.373 13.7112 257.746 13.1621C259.118 12.6129 260.588 12.3474 262.066 12.3814C264.877 12.409 267.563 13.5456 269.54 15.5439C271.517 17.5421 272.625 20.2403 272.622 23.0512V40.5109H265.148V24.6679C265.148 23.9411 265.004 23.2214 264.726 22.5499C264.448 21.8784 264.04 21.2683 263.526 20.7543C263.013 20.2404 262.402 19.8327 261.731 19.5546C261.059 19.2764 260.34 19.1333 259.613 19.1333C258.886 19.1333 258.166 19.2764 257.495 19.5546C256.823 19.8327 256.213 20.2404 255.699 20.7543C255.185 21.2683 254.778 21.8784 254.5 22.5499C254.221 23.2214 254.078 23.9411 254.078 24.6679V40.5109H246.604V12.952Z\",\n \"M277.073 4.22228C277.073 3.10246 277.517 2.02851 278.309 1.23668C279.101 0.444846 280.175 0 281.295 0C282.415 0 283.489 0.444846 284.28 1.23668C285.072 2.02851 285.517 3.10246 285.517 4.22228C285.517 5.34209 285.072 6.41604 284.28 7.20788C283.489 7.99971 282.415 8.44455 281.295 8.44455C280.175 8.44455 279.101 7.99971 278.309 7.20788C277.517 6.41604 277.073 5.34209 277.073 4.22228ZM277.529 12.9521H285.061V40.53H277.529V12.9521Z\",\n \"M290.538 12.952H298.013V15.5766C299.058 14.5328 300.304 13.7116 301.675 13.1624C303.046 12.6132 304.515 12.3476 305.991 12.3814C308.802 12.409 311.488 13.5456 313.465 15.5439C315.442 17.5421 316.55 20.2403 316.547 23.0512V40.5109H309.063V24.6679C309.063 23.2 308.48 21.7922 307.442 20.7543C306.404 19.7164 304.996 19.1332 303.528 19.1332C302.06 19.1332 300.653 19.7164 299.615 20.7543C298.577 21.7922 297.994 23.2 297.994 24.6679V40.5109H290.519L290.538 12.952Z\",\n \"M320.769 26.0183C320.769 18.3155 326.313 12.3815 333.779 12.3815C336.683 12.2851 339.509 13.3297 341.653 15.2914V12.9521H349.07V39.0845C349.07 47.3008 342.908 52.7213 334.121 52.7213C328.253 52.7213 323.66 50.5531 321.007 46.7303L325.762 41.9755C326.732 43.2492 327.997 44.268 329.448 44.944C330.899 45.6199 332.493 45.9327 334.092 45.8554C338.714 45.8554 341.624 43.4019 341.624 39.1986V36.9163C339.485 38.8417 336.683 39.8641 333.807 39.7692C326.313 39.7692 320.769 33.8352 320.769 26.0183ZM342.052 26.0754C342.052 22.0243 339.37 19.1714 335.262 19.1714C334.347 19.1317 333.435 19.2836 332.582 19.6173C331.73 19.951 330.956 20.4592 330.312 21.1092C329.667 21.7592 329.165 22.5367 328.839 23.3919C328.512 24.2471 328.368 25.1611 328.415 26.0754C328.381 26.9864 328.534 27.8947 328.865 28.744C329.197 29.5934 329.699 30.3656 330.341 31.0129C330.983 31.6602 331.751 32.1687 332.597 32.507C333.444 32.8453 334.351 33.006 335.262 32.9793C339.37 32.9793 342.052 30.1265 342.052 26.0754Z\",\n]\n\n// Full logo horizontal — viewBox: 0 0 150 27\nconst FULL_H_ICON_BG_PATH = \"M26.7034 0H0V27H26.7034V0Z\"\nconst FULL_H_ICON_MARK_PATHS = [\n \"M22.2464 14.2407V17.2101L19.705 18.6916L17.1637 20.1763V17.2069L22.2464 14.2407Z\",\n \"M12.0811 14.2407V17.2068L6.99841 14.2407V11.2745L12.0811 14.2407Z\",\n \"M12.081 20.173V23.1424L9.53969 21.6577L6.99836 20.173L4.45703 18.6915V12.756L6.99836 14.2407V17.2068L12.081 20.173Z\",\n \"M17.1636 5.33899V17.2068L14.6223 18.6915V6.82369L17.1636 5.33899Z\",\n \"M12.081 8.3085V11.2746L9.53969 9.78993L6.99836 8.3085V11.2746L4.45703 9.78993V3.85767L12.081 8.3085Z\",\n]\nconst FULL_H_WORDMARK_PATHS = [\n \"M31.0114 4.56226H40.4117V6.92205H33.6564V10.1995H39.8412V12.4938H33.6564V16.0269H40.5186V18.3867H31.0114V4.56226Z\",\n \"M42.4635 8.88857H45.0113V9.79316C45.3682 9.43331 45.7934 9.15023 46.2613 8.96097C46.7293 8.77171 47.2303 8.68019 47.7342 8.69192C48.6923 8.70142 49.6079 9.09315 50.2817 9.78186C50.9556 10.4706 51.3331 11.4005 51.3322 12.3693V18.3867H48.7844V12.9396C48.7844 12.6891 48.7356 12.441 48.6408 12.2096C48.546 11.9782 48.407 11.7679 48.2319 11.5907C48.0567 11.4136 47.8487 11.2731 47.6198 11.1772C47.3909 11.0814 47.1456 11.032 46.8979 11.032C46.6501 11.032 46.4048 11.0814 46.1759 11.1772C45.947 11.2731 45.7391 11.4136 45.5639 11.5907C45.3887 11.7679 45.2497 11.9782 45.1549 12.2096C45.0601 12.441 45.0113 12.6891 45.0113 12.9396V18.3867H42.4635V8.88857Z\",\n \"M55.5365 17.5805L51.9708 8.88855H54.7326L56.872 14.9257L59.1086 8.88855H61.9125L57.731 18.4457L56.0194 22.3591H53.316L55.5365 17.5805Z\",\n \"M62.2367 13.6474C62.2367 10.8353 64.1816 8.69186 66.7294 8.69186C67.2364 8.6784 67.7408 8.76905 68.2122 8.95834C68.6835 9.14762 69.112 9.4316 69.4717 9.7931V8.88851H72.0001V18.3932H69.4717V17.4821C69.1148 17.8419 68.6896 18.125 68.2217 18.3143C67.7537 18.5035 67.2527 18.5951 66.7488 18.5833C64.1816 18.5833 62.2367 16.4595 62.2367 13.6474ZM69.6078 13.6278C69.6078 12.1332 68.6354 11.0713 67.2156 11.0713C65.7959 11.0713 64.8299 12.1267 64.8299 13.6278C64.8299 15.1289 65.8023 16.2039 67.2027 16.2039C68.603 16.2039 69.5981 15.142 69.5981 13.6278H69.6078Z\",\n \"M74.1296 4.56226H76.7747V16.0073H83.0373V18.3867H74.1296V4.56226Z\",\n \"M84.4376 13.6277C84.4297 12.9714 84.5523 12.3201 84.7982 11.7127C85.0442 11.1052 85.4084 10.554 85.8692 10.0917C86.3301 9.62936 86.8782 9.26547 87.4809 9.02161C88.0836 8.77775 88.7286 8.65891 89.3777 8.67214C92.0584 8.67214 94.0033 10.678 94.0033 13.4114C94.0003 13.7891 93.9546 14.1651 93.8671 14.5323L87.0016 14.552C87.3258 15.7319 88.2269 16.4201 89.53 16.4201C89.9632 16.4353 90.3944 16.3553 90.794 16.1855C91.1936 16.0158 91.552 15.7603 91.8444 15.4369L93.355 16.9511C92.8788 17.4868 92.2928 17.911 91.6377 18.1941C90.9827 18.4771 90.2744 18.6122 89.5624 18.5898C86.6159 18.5833 84.4376 16.4988 84.4376 13.6277ZM87.0049 12.6248H91.543C91.2901 11.4449 90.5511 10.8156 89.3647 10.8156C88.8259 10.7983 88.2976 10.9685 87.868 11.2978C87.4385 11.6271 87.1338 12.0956 87.0049 12.6248Z\",\n \"M94.9984 13.6474C94.9984 10.8353 96.9433 8.69186 99.4911 8.69186C99.9981 8.6784 100.503 8.76905 100.974 8.95834C101.445 9.14762 101.874 9.4316 102.233 9.7931V8.88851H104.762V18.3932H102.233V17.4821C101.877 17.8415 101.452 18.1244 100.985 18.3136C100.518 18.5029 100.017 18.5946 99.5138 18.5833C96.9433 18.5833 94.9984 16.4595 94.9984 13.6474ZM102.37 13.6278C102.37 12.1332 101.397 11.0713 99.9773 11.0713C98.5576 11.0713 97.6046 12.1332 97.6046 13.6278C97.6046 15.1223 98.577 16.2039 99.9773 16.2039C101.378 16.2039 102.37 15.142 102.37 13.6278Z\",\n \"M106.645 8.88845H109.193V9.73405C109.494 9.38575 109.869 9.111 110.29 8.93047C110.711 8.74995 111.167 8.66834 111.624 8.6918C112.041 8.67276 112.458 8.74956 112.842 8.91644C113.226 9.08332 113.567 9.33595 113.841 9.65539L112.246 11.5039C112.09 11.3438 111.901 11.219 111.693 11.1377C111.485 11.0563 111.263 11.0203 111.04 11.0319C109.932 11.0319 109.193 11.7202 109.193 13.1361V18.3801H106.645V8.88845Z\",\n \"M115.073 8.88857H117.621V9.79316C117.978 9.43331 118.403 9.15023 118.871 8.96097C119.339 8.77171 119.84 8.68019 120.344 8.69192C121.302 8.70142 122.217 9.09315 122.891 9.78186C123.565 10.4706 123.943 11.4005 123.942 12.3693V18.3867H121.394V12.9396C121.394 12.4337 121.195 11.9485 120.841 11.5907C120.488 11.233 120.008 11.032 119.507 11.032C119.007 11.032 118.527 11.233 118.173 11.5907C117.82 11.9485 117.621 12.4337 117.621 12.9396V18.3867H115.073V8.88857Z\",\n \"M125.446 5.87977C125.446 5.49382 125.597 5.12369 125.867 4.85078C126.137 4.57788 126.503 4.42456 126.885 4.42456C127.267 4.42456 127.633 4.57788 127.903 4.85078C128.172 5.12369 128.324 5.49382 128.324 5.87977C128.324 6.26571 128.172 6.63585 127.903 6.90876C127.633 7.18166 127.267 7.33498 126.885 7.33498C126.503 7.33498 126.137 7.18166 125.867 6.90876C125.597 6.63585 125.446 6.26571 125.446 5.87977ZM125.601 8.88851H128.169V18.3932H125.601V8.88851Z\",\n \"M130.045 8.88857H132.593V9.79316C132.95 9.43331 133.375 9.15023 133.843 8.96097C134.311 8.77171 134.812 8.68019 135.316 8.69192C136.274 8.70142 137.19 9.09315 137.864 9.78186C138.537 10.4706 138.915 11.4005 138.914 12.3693V18.3867H136.366V12.9396C136.366 12.4337 136.168 11.9485 135.814 11.5907C135.46 11.233 134.98 11.032 134.48 11.032C133.979 11.032 133.5 11.233 133.146 11.5907C132.792 11.9485 132.593 12.4337 132.593 12.9396V18.3867H130.045V8.88857Z\",\n \"M140.357 13.3918C140.357 10.737 142.243 8.69188 144.791 8.69188C145.785 8.65521 146.754 9.01544 147.488 9.69479V8.88853H150.016V17.8951C150.016 20.7268 147.916 22.595 144.921 22.595C142.917 22.595 141.355 21.8477 140.447 20.5302L142.068 18.8914C142.396 19.33 142.825 19.6814 143.318 19.9154C143.81 20.1495 144.351 20.2592 144.895 20.2352C146.47 20.2352 147.462 19.3896 147.462 17.941V17.1544C146.733 17.8179 145.778 18.1703 144.797 18.1376C142.24 18.1311 140.357 16.0859 140.357 13.3918ZM147.611 13.4115C147.611 12.0153 146.697 11.032 145.297 11.032C144.985 11.0183 144.674 11.0707 144.383 11.1857C144.093 11.3007 143.829 11.4759 143.609 11.6999C143.389 11.9239 143.218 12.1919 143.107 12.4866C142.996 12.7814 142.947 13.0964 142.963 13.4115C142.951 13.7254 143.003 14.0385 143.116 14.3312C143.229 14.624 143.4 14.8901 143.619 15.1132C143.838 15.3363 144.1 15.5116 144.388 15.6281C144.677 15.7447 144.986 15.8001 145.297 15.7909C146.694 15.7909 147.608 14.8077 147.608 13.4115H147.611Z\",\n]\n\n// Full logo vertical — viewBox: 0 0 150 66\nconst FULL_V_ICON_BG_PATH = \"M92.5 0H57.4999V35.2011H92.5V0Z\"\nconst FULL_V_ICON_MARK_PATHS = [\n \"M86.6565 18.5665V22.4385L83.326 24.3704L79.9956 26.3063V22.4385L86.6565 18.5665Z\",\n \"M73.3348 18.5665V22.4384L66.674 18.5665V14.6986L73.3348 18.5665Z\",\n \"M73.3348 26.3063V30.1742L70.0044 28.2382L66.6739 26.3063L63.3435 24.3703V16.6346L66.6739 18.5665V22.4385L73.3348 26.3063Z\",\n \"M79.9956 6.96289V22.4384L76.6652 24.3703V8.89887L79.9956 6.96289Z\",\n \"M73.3348 10.8308V14.6986L70.0044 12.7668L66.6739 10.8308V14.6986L63.3435 12.7668V5.02698L73.3348 10.8308Z\",\n]\nconst FULL_V_WORDMARK_PATHS = [\n \"M0 43.3848H11.8506V46.3442H3.33451V50.4546H11.1314V53.3318H3.33451V57.7957H11.9895V60.7551H0V43.3848Z\",\n \"M14.4169 48.8105H17.6288V49.945C18.0787 49.4937 18.6147 49.1386 19.2047 48.9013C19.7946 48.6639 20.4262 48.5492 21.0614 48.5639C22.2692 48.5758 23.4235 49.0671 24.273 49.9308C25.1225 50.7945 25.5984 51.9607 25.5973 53.1757V60.7223H22.3854V53.8909C22.3854 53.2564 22.1348 52.648 21.6888 52.1993C21.2428 51.7507 20.6378 51.4987 20.0071 51.4987C19.3763 51.4987 18.7714 51.7507 18.3254 52.1993C17.8794 52.648 17.6288 53.2564 17.6288 53.8909V60.7223H14.4169V48.8105Z\",\n \"M30.9178 59.7111L26.4227 48.8104H29.9125L32.6096 56.3817L35.4292 48.8104H38.9353L33.6639 60.7962L31.5062 65.704H28.0982L30.9178 59.7111Z\",\n \"M39.3522 54.7788C39.3522 51.2521 41.804 48.5639 45.0159 48.5639C45.6551 48.547 46.291 48.6607 46.8852 48.8981C47.4794 49.1355 48.0196 49.4916 48.473 49.945V48.8105H51.6604V60.7305H48.473V59.6002C48.0232 60.0515 47.4871 60.4065 46.8972 60.6439C46.3073 60.8812 45.6757 60.996 45.0405 60.9813C41.804 60.969 39.3522 58.3054 39.3522 54.7788ZM48.6447 54.7541C48.6447 52.8798 47.4188 51.548 45.6289 51.548C43.8391 51.548 42.6376 52.8798 42.6376 54.7541C42.6376 56.6284 43.8636 57.9848 45.6289 57.9848C47.3942 57.9848 48.6283 56.6531 48.6283 54.7541H48.6447Z\",\n \"M54.3494 43.3848H57.6839V57.7381H65.587V60.7222H54.3494V43.3848Z\",\n \"M67.3523 54.7541C67.3422 53.931 67.4968 53.1142 67.8069 52.3524C68.1169 51.5906 68.5761 50.8992 69.157 50.3195C69.738 49.7397 70.4289 49.2833 71.1887 48.9775C71.9486 48.6717 72.7617 48.5226 73.58 48.5392C76.9635 48.5392 79.4154 51.0548 79.4154 54.4828C79.4116 54.9564 79.354 55.4281 79.2437 55.8885L70.5887 55.9132C70.9973 57.3929 72.1334 58.2561 73.7761 58.2561C74.3222 58.2751 74.8659 58.1748 75.3696 57.9619C75.8733 57.749 76.3251 57.4286 76.6938 57.023L78.5817 58.922C77.9815 59.5939 77.2427 60.1259 76.4169 60.4808C75.5911 60.8358 74.6982 61.0052 73.8006 60.9772C70.0983 60.9689 67.3523 58.3671 67.3523 54.7541ZM70.5887 53.4963H76.3097C75.9909 52.0166 75.0592 51.2274 73.5636 51.2274C72.8844 51.2057 72.2183 51.4192 71.6769 51.8321C71.1354 52.2451 70.7512 52.8326 70.5887 53.4963Z\",\n \"M80.6658 54.7788C80.6658 51.2521 83.1176 48.5639 86.3295 48.5639C86.9687 48.547 87.6046 48.6607 88.1988 48.8981C88.793 49.1355 89.3332 49.4916 89.7867 49.945V48.8105H92.9741V60.7305H89.7867V59.6002C89.3368 60.0515 88.8007 60.4065 88.2108 60.6439C87.6209 60.8812 86.9893 60.996 86.3541 60.9813C83.1176 60.969 80.6658 58.3054 80.6658 54.7788ZM89.9583 54.7541C89.9583 52.8798 88.7324 51.548 86.9425 51.548C85.1527 51.548 83.9513 52.8798 83.9513 54.7541C83.9513 56.6284 85.1772 57.9848 86.9425 57.9848C88.7078 57.9848 89.9583 56.6531 89.9583 54.7541Z\",\n \"M95.3279 48.8105H98.5398V49.871C98.9191 49.4342 99.392 49.0896 99.9229 48.8632C100.454 48.6368 101.029 48.5345 101.605 48.5639C102.131 48.54 102.656 48.6363 103.14 48.8456C103.624 49.0549 104.055 49.3717 104.4 49.7723L102.389 52.0906C102.192 51.8898 101.954 51.7333 101.692 51.6313C101.43 51.5293 101.15 51.4841 100.869 51.4987C99.4715 51.4987 98.5398 52.3619 98.5398 54.1375V60.7141H95.3279V48.8105Z\",\n \"M105.969 48.8105H109.181V49.945C109.631 49.4937 110.167 49.1386 110.757 48.9013C111.347 48.6639 111.978 48.5492 112.613 48.5639C113.821 48.5758 114.975 49.0671 115.825 49.9308C116.674 50.7945 117.15 51.9607 117.149 53.1757V60.7223H113.937V53.8909C113.937 53.2564 113.687 52.648 113.241 52.1993C112.795 51.7507 112.19 51.4987 111.559 51.4987C110.928 51.4987 110.323 51.7507 109.877 52.1993C109.431 52.648 109.181 53.2564 109.181 53.8909V60.7223H105.969V48.8105Z\",\n \"M119.062 45.0372C119.067 44.6773 119.177 44.3269 119.379 44.03C119.582 43.7332 119.867 43.5031 120.199 43.3688C120.531 43.2344 120.895 43.2018 121.245 43.2749C121.595 43.3481 121.916 43.5239 122.167 43.78C122.419 44.0362 122.589 44.3614 122.657 44.7147C122.725 45.0681 122.688 45.4337 122.55 45.7658C122.412 46.0978 122.179 46.3814 121.881 46.5809C121.584 46.7803 121.234 46.8868 120.876 46.8868C120.635 46.8908 120.395 46.8455 120.171 46.7537C119.948 46.6618 119.745 46.5253 119.576 46.3524C119.406 46.1795 119.273 45.9738 119.185 45.7477C119.096 45.5217 119.054 45.2799 119.062 45.0372ZM119.258 48.8105H122.494V60.7305H119.258V48.8105Z\",\n \"M124.848 48.8105H128.06V49.9449C128.509 49.4938 129.045 49.1388 129.634 48.9014C130.223 48.6641 130.854 48.5492 131.489 48.5639C132.696 48.5758 133.851 49.0671 134.7 49.9308C135.55 50.7945 136.026 51.9607 136.024 53.1757V60.7223H132.808V53.8909C132.808 53.2564 132.558 52.648 132.112 52.1993C131.666 51.7507 131.061 51.4987 130.43 51.4987C129.799 51.4987 129.194 51.7507 128.748 52.1993C128.302 52.648 128.052 53.2564 128.052 53.8909V60.7223H124.84L124.848 48.8105Z\",\n \"M137.839 54.4581C137.839 51.1287 140.221 48.5638 143.429 48.5638C144.677 48.5222 145.892 48.9736 146.813 49.8216V48.8104H150V60.1057C150 63.657 147.352 65.9999 143.576 65.9999C141.055 65.9999 139.081 65.0628 137.941 63.4104L139.984 61.3552C140.401 61.9058 140.945 62.3462 141.568 62.6383C142.192 62.9305 142.877 63.0657 143.564 63.0323C145.55 63.0323 146.8 61.9718 146.8 60.155V59.1891C145.881 60.0213 144.677 60.4632 143.441 60.4222C140.221 60.4222 137.839 57.8368 137.839 54.4581ZM146.984 54.4827C146.984 52.7317 145.832 51.4986 144.067 51.4986C143.28 51.4986 142.525 51.813 141.969 52.3726C141.412 52.9323 141.1 53.6913 141.1 54.4827C141.1 55.2742 141.412 56.0332 141.969 56.5928C142.525 57.1524 143.28 57.4668 144.067 57.4668C145.832 57.4668 146.984 56.2337 146.984 54.4827Z\",\n]\n\n// =============================================================================\n// Component Variants\n// =============================================================================\n\nexport const NOVA_ENYA_LOGO_VARIANTS = {\n variant: {\n icon: { description: \"Brand icon (logomark with background square)\" },\n wordmark: { description: 'Text wordmark only — \"Enya learning\"' },\n full: { description: \"Icon and wordmark combined\" },\n },\n orientation: {\n horizontal: { description: \"Icon left, wordmark right\" },\n vertical: { description: \"Icon above, wordmark below\" },\n },\n color: {\n primary: {\n description: \"Yellow icon background, dark text (for light backgrounds)\",\n },\n black: {\n description: \"Dark icon background, light text (for dark backgrounds)\",\n },\n white: {\n description: \"Light icon background, dark text (for light backgrounds)\",\n },\n },\n} as const\n\nexport const NOVA_ENYA_LOGO_DEFAULT_VARIANTS = {\n variant: \"full\",\n orientation: \"horizontal\",\n color: \"primary\",\n} as const\n\nexport type EnyaLogoVariant = keyof typeof NOVA_ENYA_LOGO_VARIANTS.variant\nexport type EnyaLogoOrientation =\n keyof typeof NOVA_ENYA_LOGO_VARIANTS.orientation\nexport type EnyaLogoColor = keyof typeof NOVA_ENYA_LOGO_VARIANTS.color\n\nexport interface EnyaLogoProps extends React.SVGAttributes<SVGSVGElement> {\n /**\n * Logo variant\n * - `icon`: Brand icon with colored background square\n * - `wordmark`: \"Enya learning\" text only\n * - `full`: Icon and wordmark combined\n * @default \"full\"\n */\n variant?: EnyaLogoVariant\n /**\n * Layout orientation — only applies when `variant=\"full\"`\n * - `horizontal`: Icon left, wordmark right\n * - `vertical`: Icon above, wordmark below\n * @default \"horizontal\"\n */\n orientation?: EnyaLogoOrientation\n /**\n * Color scheme\n * - `primary`: Yellow (#FFBB00) icon, dark wordmark — for light/neutral backgrounds\n * - `black`: Dark icon with light mark, light wordmark — for dark backgrounds\n * - `white`: Light icon, dark wordmark — for light backgrounds\n * @default \"primary\"\n */\n color?: EnyaLogoColor\n}\n\n/**\n * Enya Learning logo component.\n *\n * @example Default full horizontal logo\n * ```tsx\n * <EnyaLogo className=\"w-40\" />\n * ```\n *\n * @example Icon only\n * ```tsx\n * <EnyaLogo variant=\"icon\" className=\"w-12\" />\n * ```\n *\n * @example Wordmark only\n * ```tsx\n * <EnyaLogo variant=\"wordmark\" className=\"w-48\" />\n * ```\n *\n * @example Vertical layout with primary color\n * ```tsx\n * <EnyaLogo variant=\"full\" orientation=\"vertical\" color=\"primary\" className=\"w-32\" />\n * ```\n *\n * @example Black variant for dark backgrounds\n * ```tsx\n * <EnyaLogo color=\"black\" className=\"w-40\" />\n * ```\n */\nexport const EnyaLogo = forwardRef<SVGSVGElement, EnyaLogoProps>(\n (\n {\n variant = NOVA_ENYA_LOGO_DEFAULT_VARIANTS.variant,\n orientation = NOVA_ENYA_LOGO_DEFAULT_VARIANTS.orientation,\n color = NOVA_ENYA_LOGO_DEFAULT_VARIANTS.color,\n className,\n ...props\n },\n ref\n ) => {\n const iconBg =\n color === \"primary\"\n ? ENYA_PRIMARY\n : color === \"black\"\n ? ENYA_DARK\n : ENYA_LIGHT\n const iconMark = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n const wordmarkFill = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n\n if (variant === \"icon\") {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 100 100\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning logo\"\n className={cn(className)}\n {...props}\n >\n <path d={ICON_BG_PATH} fill={iconBg} />\n {ICON_MARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={iconMark} />\n ))}\n </svg>\n )\n }\n\n if (variant === \"wordmark\") {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 350 53\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning wordmark\"\n className={cn(className)}\n {...props}\n >\n {WORDMARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={wordmarkFill} />\n ))}\n </svg>\n )\n }\n\n // Full logo\n if (orientation === \"vertical\") {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 150 66\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning logo\"\n className={cn(className)}\n {...props}\n >\n <path d={FULL_V_ICON_BG_PATH} fill={iconBg} />\n {FULL_V_ICON_MARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={iconMark} />\n ))}\n {FULL_V_WORDMARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={wordmarkFill} />\n ))}\n </svg>\n )\n }\n\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 150 27\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning logo\"\n className={cn(className)}\n {...props}\n >\n <path d={FULL_H_ICON_BG_PATH} fill={iconBg} />\n {FULL_H_ICON_MARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={iconMark} />\n ))}\n {FULL_H_WORDMARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={wordmarkFill} />\n ))}\n </svg>\n )\n }\n)\n\nEnyaLogo.displayName = \"EnyaLogo\"\n\n// =============================================================================\n// SVG Generation Helper\n// =============================================================================\n\nexport interface GenerateEnyaLogoSvgOptions {\n /**\n * Logo variant\n * @default \"full\"\n */\n variant?: EnyaLogoVariant\n /**\n * Layout orientation — only applies when `variant=\"full\"`\n * @default \"horizontal\"\n */\n orientation?: EnyaLogoOrientation\n /**\n * Color scheme\n * @default \"primary\"\n */\n color?: EnyaLogoColor\n}\n\n/**\n * Generates SVG markup string for the Enya Learning logo.\n *\n * @example Copy icon SVG to clipboard\n * ```ts\n * const svg = generateEnyaLogoSvg({ variant: \"icon\" });\n * await navigator.clipboard.writeText(svg);\n * ```\n */\nexport function generateEnyaLogoSvg(\n options: GenerateEnyaLogoSvgOptions = {}\n): string {\n const {\n variant = \"full\",\n orientation = \"horizontal\",\n color = \"primary\",\n } = options\n\n const iconBg =\n color === \"primary\"\n ? ENYA_PRIMARY\n : color === \"black\"\n ? ENYA_DARK\n : ENYA_LIGHT\n const iconMark = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n const wordmarkFill = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n\n if (variant === \"icon\") {\n const markPaths = ICON_MARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${iconMark}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 100 100\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning logo\">\n <path d=\"${ICON_BG_PATH}\" fill=\"${iconBg}\"/>\n${markPaths}\n</svg>`\n }\n\n if (variant === \"wordmark\") {\n const textPaths = WORDMARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${wordmarkFill}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 350 53\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning wordmark\">\n${textPaths}\n</svg>`\n }\n\n if (orientation === \"vertical\") {\n const markPaths = FULL_V_ICON_MARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${iconMark}\"/>`\n ).join(\"\\n\")\n const textPaths = FULL_V_WORDMARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${wordmarkFill}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 150 66\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning logo\">\n <path d=\"${FULL_V_ICON_BG_PATH}\" fill=\"${iconBg}\"/>\n${markPaths}\n${textPaths}\n</svg>`\n }\n\n const markPaths = FULL_H_ICON_MARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${iconMark}\"/>`\n ).join(\"\\n\")\n const textPaths = FULL_H_WORDMARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${wordmarkFill}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 150 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning logo\">\n <path d=\"${FULL_H_ICON_BG_PATH}\" fill=\"${iconBg}\"/>\n${markPaths}\n${textPaths}\n</svg>`\n}\n"],"mappings":";;;;AAOA,IAAM,IAAe,WACf,IAAY,WACZ,IAAa,WAOb,IAAe,qCACf,IAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGM,IAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGM,IAAsB,8BACtB,IAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACM,IAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAGM,IAAsB,mCACtB,IAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GACM,IAAwB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMa,IAA0B;AAAA,EACrC,SAAS;AAAA,IACP,MAAM,EAAE,aAAa,+CAA+C;AAAA,IACpE,UAAU,EAAE,aAAa,uCAAuC;AAAA,IAChE,MAAM,EAAE,aAAa,6BAA6B;AAAA,EACpD;AAAA,EACA,aAAa;AAAA,IACX,YAAY,EAAE,aAAa,4BAA4B;AAAA,IACvD,UAAU,EAAE,aAAa,6BAA6B;AAAA,EACxD;AAAA,EACA,OAAO;AAAA,IACL,SAAS,EACP,aAAa,4DACf;AAAA,IACA,OAAO,EACL,aAAa,0DACf;AAAA,IACA,OAAO,EACL,aAAa,2DACf;AAAA,EACF;AACF,GAEa,IAAkC;AAAA,EAC7C,SAAS;AAAA,EACT,aAAa;AAAA,EACb,OAAO;AACT,GA6Da,IAAW,EAAA,CAEpB,EACE,SAAA,IAAU,EAAgC,SAC1C,aAAA,IAAc,EAAgC,aAC9C,OAAA,IAAQ,EAAgC,OACxC,WAAA,GACA,GAAG,EAAA,GAEL,MACG;AACH,QAAM,IACJ,MAAU,YACN,IACA,MAAU,UACR,IACA,GACF,IAAW,MAAU,UAAU,IAAa,GAC5C,IAAe,MAAU,UAAU,IAAa;AAEtD,SAAI,MAAY,SAEZ,gBAAA,EAAC,OAAD;AAAA,IACO,KAAA;AAAA,IACL,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACN,MAAK;AAAA,IACL,cAAW;AAAA,IACX,WAAW,EAAG,CAAS;AAAA,IACvB,GAAI;AAAA,cARN,CAUE,gBAAA,EAAC,QAAD;AAAA,MAAM,GAAG;AAAA,MAAc,MAAM;AAAA,IAAS,CAAA,GACrC,EAAgB,IAAA,CAAK,GAAG,MACvB,gBAAA,EAAC,QAAD;AAAA,MAAiB,GAAA;AAAA,MAAG,MAAM;AAAA,IAAW,GAA1B,CAA0B,CACtC,CACE;AAAA,OAIL,MAAY,aAEZ,gBAAA,EAAC,OAAD;AAAA,IACO,KAAA;AAAA,IACL,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACN,MAAK;AAAA,IACL,cAAW;AAAA,IACX,WAAW,EAAG,CAAS;AAAA,IACvB,GAAI;AAAA,cAEH,EAAe,IAAA,CAAK,GAAG,MACtB,gBAAA,EAAC,QAAD;AAAA,MAAiB,GAAA;AAAA,MAAG,MAAM;AAAA,IAAe,GAA9B,CAA8B,CAC1C;AAAA,EACE,CAAA,IAKL,MAAgB,aAEhB,gBAAA,EAAC,OAAD;AAAA,IACO,KAAA;AAAA,IACL,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACN,MAAK;AAAA,IACL,cAAW;AAAA,IACX,WAAW,EAAG,CAAS;AAAA,IACvB,GAAI;AAAA,cARN;AAAA,MAUE,gBAAA,EAAC,QAAD;AAAA,QAAM,GAAG;AAAA,QAAqB,MAAM;AAAA,MAAS,CAAA;AAAA,MAC5C,EAAuB,IAAA,CAAK,GAAG,MAC9B,gBAAA,EAAC,QAAD;AAAA,QAAiB,GAAA;AAAA,QAAG,MAAM;AAAA,MAAW,GAA1B,CAA0B,CACtC;AAAA,MACA,EAAsB,IAAA,CAAK,GAAG,MAC7B,gBAAA,EAAC,QAAD;AAAA,QAAiB,GAAA;AAAA,QAAG,MAAM;AAAA,MAAe,GAA9B,CAA8B,CAC1C;AAAA,IACE;AAAA,OAKP,gBAAA,EAAC,OAAD;AAAA,IACO,KAAA;AAAA,IACL,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACN,MAAK;AAAA,IACL,cAAW;AAAA,IACX,WAAW,EAAG,CAAS;AAAA,IACvB,GAAI;AAAA,cARN;AAAA,MAUE,gBAAA,EAAC,QAAD;AAAA,QAAM,GAAG;AAAA,QAAqB,MAAM;AAAA,MAAS,CAAA;AAAA,MAC5C,EAAuB,IAAA,CAAK,GAAG,MAC9B,gBAAA,EAAC,QAAD;AAAA,QAAiB,GAAA;AAAA,QAAG,MAAM;AAAA,MAAW,GAA1B,CAA0B,CACtC;AAAA,MACA,EAAsB,IAAA,CAAK,GAAG,MAC7B,gBAAA,EAAC,QAAD;AAAA,QAAiB,GAAA;AAAA,QAAG,MAAM;AAAA,MAAe,GAA9B,CAA8B,CAC1C;AAAA,IACE;AAAA;AAET,CACF;AAEA,EAAS,cAAc;AAiCvB,SAAgB,EACd,IAAsC,CAAC,GAC/B;AACR,QAAM,EACJ,SAAA,IAAU,QACV,aAAA,IAAc,cACd,OAAA,IAAQ,UAAA,IACN,GAEE,IACJ,MAAU,YACN,IACA,MAAU,UACR,IACA,GACF,IAAW,MAAU,UAAU,IAAa,GAC5C,IAAe,MAAU,UAAU,IAAa;AAEtD,SAAI,MAAY,SAIP;AAAA,aACE,CAAA,WAAuB,CAAA;AAAA,EAJd,EAAgB,IAAA,CAC/B,MAAM,cAAc,CAAA,WAAY,CAAA,KACnC,EAAE,KAAK;AAAA,CAGT,CAAA;AAAA,UAII,MAAY,aAIP;AAAA,EAHW,EAAe,IAAA,CAC9B,MAAM,cAAc,CAAA,WAAY,CAAA,KACnC,EAAE,KAAK;AAAA,CAET,CAAA;AAAA,UAII,MAAgB,aAOX;AAAA,aACE,CAAA,WAA8B,CAAA;AAAA,EAPrB,EAAuB,IAAA,CACtC,MAAM,cAAc,CAAA,WAAY,CAAA,KACnC,EAAE,KAAK;AAAA,CAMT,CAAA;AAAA,EALoB,EAAsB,IAAA,CACrC,MAAM,cAAc,CAAA,WAAY,CAAA,KACnC,EAAE,KAAK;AAAA,CAIT,CAAA;AAAA,UAUO;AAAA,aACI,CAAA,WAA8B,CAAA;AAAA,EAPvB,EAAuB,IAAA,CACtC,MAAM,cAAc,CAAA,WAAY,CAAA,KACnC,EAAE,KAAK;AAAA,CAMP,CAAA;AAAA,EALkB,EAAsB,IAAA,CACrC,MAAM,cAAc,CAAA,WAAY,CAAA,KACnC,EAAE,KAAK;AAAA,CAIP,CAAA;AAAA;AAEF"}
|
|
1
|
+
{"version":3,"file":"enya-logo.js","names":[],"sources":["../../src/components/enya-logo/enya-logo.tsx"],"sourcesContent":["import { forwardRef } from \"react\"\nimport { cn } from \"../../lib/utils\"\n\n// =============================================================================\n// Brand Colors (internal)\n// =============================================================================\n\nconst ENYA_PRIMARY = \"var(--colour-enya-yellow)\"\nconst ENYA_DARK = \"var(--colour-enya-black)\"\nconst ENYA_LIGHT = \"var(--colour-enya-white)\"\n\n// =============================================================================\n// SVG Path Data (internal)\n// =============================================================================\n\n// Icon variant — viewBox: 0 0 100 100\nconst ICON_BG_PATH = \"M100 0H6.10352e-05V99.9883H100V0Z\"\nconst ICON_MARK_PATHS = [\n \"M83.3042 52.7379V63.7362L73.7887 69.2236L64.2733 74.7227V63.7362L83.3042 52.7379Z\",\n \"M45.2424 52.7379V63.7362L26.2114 52.7379V41.7513L45.2424 52.7379Z\",\n \"M45.2423 74.7226V85.7092L35.7269 80.2101L26.2114 74.7226L16.6959 69.2235V47.2504L26.2114 52.7378V63.7361L45.2423 74.7226Z\",\n \"M64.2732 19.7781V63.736L54.7578 69.2235V25.2772L64.2732 19.7781Z\",\n \"M45.2423 30.7648V41.7513L35.7269 36.2639L26.2114 30.7648V41.7513L16.6959 36.2639V14.2791L45.2423 30.7648Z\",\n]\n\n// Wordmark variant — viewBox: 0 0 350 53 (\"Enya learning\")\nconst WORDMARK_PATHS = [\n \"M0 0.399292H27.5779V7.24623H7.75986V16.7559H25.9042V23.4126H7.75986V33.664H27.9013V40.5109H0V0.399292Z\",\n \"M33.55 12.952H41.0246V15.5767C42.0716 14.5326 43.319 13.7112 44.6919 13.1621C46.0647 12.6129 47.5345 12.3474 49.0127 12.3814C51.8235 12.409 54.5096 13.5456 56.4865 15.5439C58.4634 17.5422 59.571 20.2403 59.5684 23.0512V40.5109H52.0938V24.6679C52.0938 23.2 51.5107 21.7923 50.4728 20.7543C49.4348 19.7164 48.0271 19.1333 46.5592 19.1333C45.0914 19.1333 43.6836 19.7164 42.6457 20.7543C41.6077 21.7923 41.0246 23.2 41.0246 24.6679V40.5109H33.55V12.952Z\",\n \"M71.95 38.1716L61.4894 12.952H69.6106L75.887 30.4688L82.4486 12.952H90.6079L78.3404 40.6821L73.3194 52.0366H65.3883L71.95 38.1716Z\",\n \"M91.5776 26.76C91.5776 18.6008 97.2834 12.3815 104.758 12.3815C106.245 12.3424 107.725 12.6055 109.108 13.1547C110.491 13.7039 111.748 14.5278 112.803 15.5767V12.9521H120.221V40.53H112.803V37.8863C111.756 38.9304 110.509 39.7518 109.136 40.3009C107.763 40.85 106.293 41.1156 104.815 41.0815C97.2834 41.0815 91.5776 34.9193 91.5776 26.76ZM113.164 26.703C113.164 22.3666 110.312 19.2855 106.146 19.2855C101.981 19.2855 99.1853 22.3666 99.1853 26.703C99.1853 31.0394 102.038 34.1775 106.146 34.1775C110.255 34.1775 113.164 31.0964 113.164 26.703Z\",\n \"M126.478 0.399292H134.238V33.6069H152.63V40.5109H126.478V0.399292Z\",\n \"M156.738 26.703C156.712 24.797 157.07 22.9054 157.79 21.1406C158.51 19.3759 159.579 17.7741 160.931 16.4307C162.283 15.0873 163.892 14.0298 165.661 13.3211C167.431 12.6124 169.325 12.2669 171.23 12.3054C179.104 12.3054 184.81 18.1253 184.81 26.0563C184.801 27.1521 184.667 28.2433 184.411 29.3086L164.269 29.4227C165.22 32.8462 167.864 34.8432 171.687 34.8432C172.958 34.8873 174.223 34.655 175.395 34.1625C176.567 33.6699 177.619 32.9288 178.477 31.9903L182.87 36.3838C181.473 37.9382 179.754 39.169 177.832 39.9903C175.911 40.8115 173.833 41.2034 171.744 41.1386C163.128 41.0815 156.738 35.0334 156.738 26.703ZM164.269 23.793H177.583C176.841 20.3695 174.673 18.5437 171.192 18.5437C169.612 18.4934 168.062 18.9874 166.802 19.9429C165.542 20.8983 164.648 22.2575 164.269 23.793Z\",\n \"M187.72 26.76C187.72 18.6008 193.426 12.3815 200.901 12.3815C202.388 12.3424 203.868 12.6055 205.251 13.1547C206.633 13.7039 207.89 14.5278 208.946 15.5767V12.9521H216.363V40.53H208.946V37.8863C207.899 38.9304 206.651 39.7518 205.278 40.3009C203.906 40.85 202.436 41.1156 200.958 41.0815C193.426 41.0815 187.72 34.9193 187.72 26.76ZM209.345 26.703C209.345 22.3666 206.492 19.2855 202.327 19.2855C198.162 19.2855 195.366 22.3666 195.366 26.703C195.366 31.0394 198.219 34.1775 202.327 34.1775C206.435 34.1775 209.345 31.0964 209.345 26.703Z\",\n \"M221.841 12.952H229.315V15.4055C230.198 14.3949 231.298 13.5977 232.534 13.0739C233.769 12.5501 235.107 12.3133 236.447 12.3814C237.671 12.3238 238.891 12.5437 240.018 13.0246C241.144 13.5054 242.147 14.2349 242.952 15.1582L238.273 20.5217C237.813 20.0571 237.26 19.695 236.651 19.459C236.041 19.223 235.388 19.1185 234.736 19.1523C231.483 19.1523 229.315 21.1493 229.315 25.2575V40.4729H221.841V12.952Z\",\n \"M246.604 12.952H254.078V15.5767C255.125 14.5326 256.373 13.7112 257.746 13.1621C259.118 12.6129 260.588 12.3474 262.066 12.3814C264.877 12.409 267.563 13.5456 269.54 15.5439C271.517 17.5421 272.625 20.2403 272.622 23.0512V40.5109H265.148V24.6679C265.148 23.9411 265.004 23.2214 264.726 22.5499C264.448 21.8784 264.04 21.2683 263.526 20.7543C263.013 20.2404 262.402 19.8327 261.731 19.5546C261.059 19.2764 260.34 19.1333 259.613 19.1333C258.886 19.1333 258.166 19.2764 257.495 19.5546C256.823 19.8327 256.213 20.2404 255.699 20.7543C255.185 21.2683 254.778 21.8784 254.5 22.5499C254.221 23.2214 254.078 23.9411 254.078 24.6679V40.5109H246.604V12.952Z\",\n \"M277.073 4.22228C277.073 3.10246 277.517 2.02851 278.309 1.23668C279.101 0.444846 280.175 0 281.295 0C282.415 0 283.489 0.444846 284.28 1.23668C285.072 2.02851 285.517 3.10246 285.517 4.22228C285.517 5.34209 285.072 6.41604 284.28 7.20788C283.489 7.99971 282.415 8.44455 281.295 8.44455C280.175 8.44455 279.101 7.99971 278.309 7.20788C277.517 6.41604 277.073 5.34209 277.073 4.22228ZM277.529 12.9521H285.061V40.53H277.529V12.9521Z\",\n \"M290.538 12.952H298.013V15.5766C299.058 14.5328 300.304 13.7116 301.675 13.1624C303.046 12.6132 304.515 12.3476 305.991 12.3814C308.802 12.409 311.488 13.5456 313.465 15.5439C315.442 17.5421 316.55 20.2403 316.547 23.0512V40.5109H309.063V24.6679C309.063 23.2 308.48 21.7922 307.442 20.7543C306.404 19.7164 304.996 19.1332 303.528 19.1332C302.06 19.1332 300.653 19.7164 299.615 20.7543C298.577 21.7922 297.994 23.2 297.994 24.6679V40.5109H290.519L290.538 12.952Z\",\n \"M320.769 26.0183C320.769 18.3155 326.313 12.3815 333.779 12.3815C336.683 12.2851 339.509 13.3297 341.653 15.2914V12.9521H349.07V39.0845C349.07 47.3008 342.908 52.7213 334.121 52.7213C328.253 52.7213 323.66 50.5531 321.007 46.7303L325.762 41.9755C326.732 43.2492 327.997 44.268 329.448 44.944C330.899 45.6199 332.493 45.9327 334.092 45.8554C338.714 45.8554 341.624 43.4019 341.624 39.1986V36.9163C339.485 38.8417 336.683 39.8641 333.807 39.7692C326.313 39.7692 320.769 33.8352 320.769 26.0183ZM342.052 26.0754C342.052 22.0243 339.37 19.1714 335.262 19.1714C334.347 19.1317 333.435 19.2836 332.582 19.6173C331.73 19.951 330.956 20.4592 330.312 21.1092C329.667 21.7592 329.165 22.5367 328.839 23.3919C328.512 24.2471 328.368 25.1611 328.415 26.0754C328.381 26.9864 328.534 27.8947 328.865 28.744C329.197 29.5934 329.699 30.3656 330.341 31.0129C330.983 31.6602 331.751 32.1687 332.597 32.507C333.444 32.8453 334.351 33.006 335.262 32.9793C339.37 32.9793 342.052 30.1265 342.052 26.0754Z\",\n]\n\n// Full logo horizontal — viewBox: 0 0 150 27\nconst FULL_H_ICON_BG_PATH = \"M26.7034 0H0V27H26.7034V0Z\"\nconst FULL_H_ICON_MARK_PATHS = [\n \"M22.2464 14.2407V17.2101L19.705 18.6916L17.1637 20.1763V17.2069L22.2464 14.2407Z\",\n \"M12.0811 14.2407V17.2068L6.99841 14.2407V11.2745L12.0811 14.2407Z\",\n \"M12.081 20.173V23.1424L9.53969 21.6577L6.99836 20.173L4.45703 18.6915V12.756L6.99836 14.2407V17.2068L12.081 20.173Z\",\n \"M17.1636 5.33899V17.2068L14.6223 18.6915V6.82369L17.1636 5.33899Z\",\n \"M12.081 8.3085V11.2746L9.53969 9.78993L6.99836 8.3085V11.2746L4.45703 9.78993V3.85767L12.081 8.3085Z\",\n]\nconst FULL_H_WORDMARK_PATHS = [\n \"M31.0114 4.56226H40.4117V6.92205H33.6564V10.1995H39.8412V12.4938H33.6564V16.0269H40.5186V18.3867H31.0114V4.56226Z\",\n \"M42.4635 8.88857H45.0113V9.79316C45.3682 9.43331 45.7934 9.15023 46.2613 8.96097C46.7293 8.77171 47.2303 8.68019 47.7342 8.69192C48.6923 8.70142 49.6079 9.09315 50.2817 9.78186C50.9556 10.4706 51.3331 11.4005 51.3322 12.3693V18.3867H48.7844V12.9396C48.7844 12.6891 48.7356 12.441 48.6408 12.2096C48.546 11.9782 48.407 11.7679 48.2319 11.5907C48.0567 11.4136 47.8487 11.2731 47.6198 11.1772C47.3909 11.0814 47.1456 11.032 46.8979 11.032C46.6501 11.032 46.4048 11.0814 46.1759 11.1772C45.947 11.2731 45.7391 11.4136 45.5639 11.5907C45.3887 11.7679 45.2497 11.9782 45.1549 12.2096C45.0601 12.441 45.0113 12.6891 45.0113 12.9396V18.3867H42.4635V8.88857Z\",\n \"M55.5365 17.5805L51.9708 8.88855H54.7326L56.872 14.9257L59.1086 8.88855H61.9125L57.731 18.4457L56.0194 22.3591H53.316L55.5365 17.5805Z\",\n \"M62.2367 13.6474C62.2367 10.8353 64.1816 8.69186 66.7294 8.69186C67.2364 8.6784 67.7408 8.76905 68.2122 8.95834C68.6835 9.14762 69.112 9.4316 69.4717 9.7931V8.88851H72.0001V18.3932H69.4717V17.4821C69.1148 17.8419 68.6896 18.125 68.2217 18.3143C67.7537 18.5035 67.2527 18.5951 66.7488 18.5833C64.1816 18.5833 62.2367 16.4595 62.2367 13.6474ZM69.6078 13.6278C69.6078 12.1332 68.6354 11.0713 67.2156 11.0713C65.7959 11.0713 64.8299 12.1267 64.8299 13.6278C64.8299 15.1289 65.8023 16.2039 67.2027 16.2039C68.603 16.2039 69.5981 15.142 69.5981 13.6278H69.6078Z\",\n \"M74.1296 4.56226H76.7747V16.0073H83.0373V18.3867H74.1296V4.56226Z\",\n \"M84.4376 13.6277C84.4297 12.9714 84.5523 12.3201 84.7982 11.7127C85.0442 11.1052 85.4084 10.554 85.8692 10.0917C86.3301 9.62936 86.8782 9.26547 87.4809 9.02161C88.0836 8.77775 88.7286 8.65891 89.3777 8.67214C92.0584 8.67214 94.0033 10.678 94.0033 13.4114C94.0003 13.7891 93.9546 14.1651 93.8671 14.5323L87.0016 14.552C87.3258 15.7319 88.2269 16.4201 89.53 16.4201C89.9632 16.4353 90.3944 16.3553 90.794 16.1855C91.1936 16.0158 91.552 15.7603 91.8444 15.4369L93.355 16.9511C92.8788 17.4868 92.2928 17.911 91.6377 18.1941C90.9827 18.4771 90.2744 18.6122 89.5624 18.5898C86.6159 18.5833 84.4376 16.4988 84.4376 13.6277ZM87.0049 12.6248H91.543C91.2901 11.4449 90.5511 10.8156 89.3647 10.8156C88.8259 10.7983 88.2976 10.9685 87.868 11.2978C87.4385 11.6271 87.1338 12.0956 87.0049 12.6248Z\",\n \"M94.9984 13.6474C94.9984 10.8353 96.9433 8.69186 99.4911 8.69186C99.9981 8.6784 100.503 8.76905 100.974 8.95834C101.445 9.14762 101.874 9.4316 102.233 9.7931V8.88851H104.762V18.3932H102.233V17.4821C101.877 17.8415 101.452 18.1244 100.985 18.3136C100.518 18.5029 100.017 18.5946 99.5138 18.5833C96.9433 18.5833 94.9984 16.4595 94.9984 13.6474ZM102.37 13.6278C102.37 12.1332 101.397 11.0713 99.9773 11.0713C98.5576 11.0713 97.6046 12.1332 97.6046 13.6278C97.6046 15.1223 98.577 16.2039 99.9773 16.2039C101.378 16.2039 102.37 15.142 102.37 13.6278Z\",\n \"M106.645 8.88845H109.193V9.73405C109.494 9.38575 109.869 9.111 110.29 8.93047C110.711 8.74995 111.167 8.66834 111.624 8.6918C112.041 8.67276 112.458 8.74956 112.842 8.91644C113.226 9.08332 113.567 9.33595 113.841 9.65539L112.246 11.5039C112.09 11.3438 111.901 11.219 111.693 11.1377C111.485 11.0563 111.263 11.0203 111.04 11.0319C109.932 11.0319 109.193 11.7202 109.193 13.1361V18.3801H106.645V8.88845Z\",\n \"M115.073 8.88857H117.621V9.79316C117.978 9.43331 118.403 9.15023 118.871 8.96097C119.339 8.77171 119.84 8.68019 120.344 8.69192C121.302 8.70142 122.217 9.09315 122.891 9.78186C123.565 10.4706 123.943 11.4005 123.942 12.3693V18.3867H121.394V12.9396C121.394 12.4337 121.195 11.9485 120.841 11.5907C120.488 11.233 120.008 11.032 119.507 11.032C119.007 11.032 118.527 11.233 118.173 11.5907C117.82 11.9485 117.621 12.4337 117.621 12.9396V18.3867H115.073V8.88857Z\",\n \"M125.446 5.87977C125.446 5.49382 125.597 5.12369 125.867 4.85078C126.137 4.57788 126.503 4.42456 126.885 4.42456C127.267 4.42456 127.633 4.57788 127.903 4.85078C128.172 5.12369 128.324 5.49382 128.324 5.87977C128.324 6.26571 128.172 6.63585 127.903 6.90876C127.633 7.18166 127.267 7.33498 126.885 7.33498C126.503 7.33498 126.137 7.18166 125.867 6.90876C125.597 6.63585 125.446 6.26571 125.446 5.87977ZM125.601 8.88851H128.169V18.3932H125.601V8.88851Z\",\n \"M130.045 8.88857H132.593V9.79316C132.95 9.43331 133.375 9.15023 133.843 8.96097C134.311 8.77171 134.812 8.68019 135.316 8.69192C136.274 8.70142 137.19 9.09315 137.864 9.78186C138.537 10.4706 138.915 11.4005 138.914 12.3693V18.3867H136.366V12.9396C136.366 12.4337 136.168 11.9485 135.814 11.5907C135.46 11.233 134.98 11.032 134.48 11.032C133.979 11.032 133.5 11.233 133.146 11.5907C132.792 11.9485 132.593 12.4337 132.593 12.9396V18.3867H130.045V8.88857Z\",\n \"M140.357 13.3918C140.357 10.737 142.243 8.69188 144.791 8.69188C145.785 8.65521 146.754 9.01544 147.488 9.69479V8.88853H150.016V17.8951C150.016 20.7268 147.916 22.595 144.921 22.595C142.917 22.595 141.355 21.8477 140.447 20.5302L142.068 18.8914C142.396 19.33 142.825 19.6814 143.318 19.9154C143.81 20.1495 144.351 20.2592 144.895 20.2352C146.47 20.2352 147.462 19.3896 147.462 17.941V17.1544C146.733 17.8179 145.778 18.1703 144.797 18.1376C142.24 18.1311 140.357 16.0859 140.357 13.3918ZM147.611 13.4115C147.611 12.0153 146.697 11.032 145.297 11.032C144.985 11.0183 144.674 11.0707 144.383 11.1857C144.093 11.3007 143.829 11.4759 143.609 11.6999C143.389 11.9239 143.218 12.1919 143.107 12.4866C142.996 12.7814 142.947 13.0964 142.963 13.4115C142.951 13.7254 143.003 14.0385 143.116 14.3312C143.229 14.624 143.4 14.8901 143.619 15.1132C143.838 15.3363 144.1 15.5116 144.388 15.6281C144.677 15.7447 144.986 15.8001 145.297 15.7909C146.694 15.7909 147.608 14.8077 147.608 13.4115H147.611Z\",\n]\n\n// Full logo vertical — viewBox: 0 0 150 66\nconst FULL_V_ICON_BG_PATH = \"M92.5 0H57.4999V35.2011H92.5V0Z\"\nconst FULL_V_ICON_MARK_PATHS = [\n \"M86.6565 18.5665V22.4385L83.326 24.3704L79.9956 26.3063V22.4385L86.6565 18.5665Z\",\n \"M73.3348 18.5665V22.4384L66.674 18.5665V14.6986L73.3348 18.5665Z\",\n \"M73.3348 26.3063V30.1742L70.0044 28.2382L66.6739 26.3063L63.3435 24.3703V16.6346L66.6739 18.5665V22.4385L73.3348 26.3063Z\",\n \"M79.9956 6.96289V22.4384L76.6652 24.3703V8.89887L79.9956 6.96289Z\",\n \"M73.3348 10.8308V14.6986L70.0044 12.7668L66.6739 10.8308V14.6986L63.3435 12.7668V5.02698L73.3348 10.8308Z\",\n]\nconst FULL_V_WORDMARK_PATHS = [\n \"M0 43.3848H11.8506V46.3442H3.33451V50.4546H11.1314V53.3318H3.33451V57.7957H11.9895V60.7551H0V43.3848Z\",\n \"M14.4169 48.8105H17.6288V49.945C18.0787 49.4937 18.6147 49.1386 19.2047 48.9013C19.7946 48.6639 20.4262 48.5492 21.0614 48.5639C22.2692 48.5758 23.4235 49.0671 24.273 49.9308C25.1225 50.7945 25.5984 51.9607 25.5973 53.1757V60.7223H22.3854V53.8909C22.3854 53.2564 22.1348 52.648 21.6888 52.1993C21.2428 51.7507 20.6378 51.4987 20.0071 51.4987C19.3763 51.4987 18.7714 51.7507 18.3254 52.1993C17.8794 52.648 17.6288 53.2564 17.6288 53.8909V60.7223H14.4169V48.8105Z\",\n \"M30.9178 59.7111L26.4227 48.8104H29.9125L32.6096 56.3817L35.4292 48.8104H38.9353L33.6639 60.7962L31.5062 65.704H28.0982L30.9178 59.7111Z\",\n \"M39.3522 54.7788C39.3522 51.2521 41.804 48.5639 45.0159 48.5639C45.6551 48.547 46.291 48.6607 46.8852 48.8981C47.4794 49.1355 48.0196 49.4916 48.473 49.945V48.8105H51.6604V60.7305H48.473V59.6002C48.0232 60.0515 47.4871 60.4065 46.8972 60.6439C46.3073 60.8812 45.6757 60.996 45.0405 60.9813C41.804 60.969 39.3522 58.3054 39.3522 54.7788ZM48.6447 54.7541C48.6447 52.8798 47.4188 51.548 45.6289 51.548C43.8391 51.548 42.6376 52.8798 42.6376 54.7541C42.6376 56.6284 43.8636 57.9848 45.6289 57.9848C47.3942 57.9848 48.6283 56.6531 48.6283 54.7541H48.6447Z\",\n \"M54.3494 43.3848H57.6839V57.7381H65.587V60.7222H54.3494V43.3848Z\",\n \"M67.3523 54.7541C67.3422 53.931 67.4968 53.1142 67.8069 52.3524C68.1169 51.5906 68.5761 50.8992 69.157 50.3195C69.738 49.7397 70.4289 49.2833 71.1887 48.9775C71.9486 48.6717 72.7617 48.5226 73.58 48.5392C76.9635 48.5392 79.4154 51.0548 79.4154 54.4828C79.4116 54.9564 79.354 55.4281 79.2437 55.8885L70.5887 55.9132C70.9973 57.3929 72.1334 58.2561 73.7761 58.2561C74.3222 58.2751 74.8659 58.1748 75.3696 57.9619C75.8733 57.749 76.3251 57.4286 76.6938 57.023L78.5817 58.922C77.9815 59.5939 77.2427 60.1259 76.4169 60.4808C75.5911 60.8358 74.6982 61.0052 73.8006 60.9772C70.0983 60.9689 67.3523 58.3671 67.3523 54.7541ZM70.5887 53.4963H76.3097C75.9909 52.0166 75.0592 51.2274 73.5636 51.2274C72.8844 51.2057 72.2183 51.4192 71.6769 51.8321C71.1354 52.2451 70.7512 52.8326 70.5887 53.4963Z\",\n \"M80.6658 54.7788C80.6658 51.2521 83.1176 48.5639 86.3295 48.5639C86.9687 48.547 87.6046 48.6607 88.1988 48.8981C88.793 49.1355 89.3332 49.4916 89.7867 49.945V48.8105H92.9741V60.7305H89.7867V59.6002C89.3368 60.0515 88.8007 60.4065 88.2108 60.6439C87.6209 60.8812 86.9893 60.996 86.3541 60.9813C83.1176 60.969 80.6658 58.3054 80.6658 54.7788ZM89.9583 54.7541C89.9583 52.8798 88.7324 51.548 86.9425 51.548C85.1527 51.548 83.9513 52.8798 83.9513 54.7541C83.9513 56.6284 85.1772 57.9848 86.9425 57.9848C88.7078 57.9848 89.9583 56.6531 89.9583 54.7541Z\",\n \"M95.3279 48.8105H98.5398V49.871C98.9191 49.4342 99.392 49.0896 99.9229 48.8632C100.454 48.6368 101.029 48.5345 101.605 48.5639C102.131 48.54 102.656 48.6363 103.14 48.8456C103.624 49.0549 104.055 49.3717 104.4 49.7723L102.389 52.0906C102.192 51.8898 101.954 51.7333 101.692 51.6313C101.43 51.5293 101.15 51.4841 100.869 51.4987C99.4715 51.4987 98.5398 52.3619 98.5398 54.1375V60.7141H95.3279V48.8105Z\",\n \"M105.969 48.8105H109.181V49.945C109.631 49.4937 110.167 49.1386 110.757 48.9013C111.347 48.6639 111.978 48.5492 112.613 48.5639C113.821 48.5758 114.975 49.0671 115.825 49.9308C116.674 50.7945 117.15 51.9607 117.149 53.1757V60.7223H113.937V53.8909C113.937 53.2564 113.687 52.648 113.241 52.1993C112.795 51.7507 112.19 51.4987 111.559 51.4987C110.928 51.4987 110.323 51.7507 109.877 52.1993C109.431 52.648 109.181 53.2564 109.181 53.8909V60.7223H105.969V48.8105Z\",\n \"M119.062 45.0372C119.067 44.6773 119.177 44.3269 119.379 44.03C119.582 43.7332 119.867 43.5031 120.199 43.3688C120.531 43.2344 120.895 43.2018 121.245 43.2749C121.595 43.3481 121.916 43.5239 122.167 43.78C122.419 44.0362 122.589 44.3614 122.657 44.7147C122.725 45.0681 122.688 45.4337 122.55 45.7658C122.412 46.0978 122.179 46.3814 121.881 46.5809C121.584 46.7803 121.234 46.8868 120.876 46.8868C120.635 46.8908 120.395 46.8455 120.171 46.7537C119.948 46.6618 119.745 46.5253 119.576 46.3524C119.406 46.1795 119.273 45.9738 119.185 45.7477C119.096 45.5217 119.054 45.2799 119.062 45.0372ZM119.258 48.8105H122.494V60.7305H119.258V48.8105Z\",\n \"M124.848 48.8105H128.06V49.9449C128.509 49.4938 129.045 49.1388 129.634 48.9014C130.223 48.6641 130.854 48.5492 131.489 48.5639C132.696 48.5758 133.851 49.0671 134.7 49.9308C135.55 50.7945 136.026 51.9607 136.024 53.1757V60.7223H132.808V53.8909C132.808 53.2564 132.558 52.648 132.112 52.1993C131.666 51.7507 131.061 51.4987 130.43 51.4987C129.799 51.4987 129.194 51.7507 128.748 52.1993C128.302 52.648 128.052 53.2564 128.052 53.8909V60.7223H124.84L124.848 48.8105Z\",\n \"M137.839 54.4581C137.839 51.1287 140.221 48.5638 143.429 48.5638C144.677 48.5222 145.892 48.9736 146.813 49.8216V48.8104H150V60.1057C150 63.657 147.352 65.9999 143.576 65.9999C141.055 65.9999 139.081 65.0628 137.941 63.4104L139.984 61.3552C140.401 61.9058 140.945 62.3462 141.568 62.6383C142.192 62.9305 142.877 63.0657 143.564 63.0323C145.55 63.0323 146.8 61.9718 146.8 60.155V59.1891C145.881 60.0213 144.677 60.4632 143.441 60.4222C140.221 60.4222 137.839 57.8368 137.839 54.4581ZM146.984 54.4827C146.984 52.7317 145.832 51.4986 144.067 51.4986C143.28 51.4986 142.525 51.813 141.969 52.3726C141.412 52.9323 141.1 53.6913 141.1 54.4827C141.1 55.2742 141.412 56.0332 141.969 56.5928C142.525 57.1524 143.28 57.4668 144.067 57.4668C145.832 57.4668 146.984 56.2337 146.984 54.4827Z\",\n]\n\n// =============================================================================\n// Component Variants\n// =============================================================================\n\nexport const NOVA_ENYA_LOGO_VARIANTS = {\n variant: {\n icon: { description: \"Brand icon (logomark with background square)\" },\n wordmark: { description: 'Text wordmark only — \"Enya learning\"' },\n full: { description: \"Icon and wordmark combined\" },\n },\n orientation: {\n horizontal: { description: \"Icon left, wordmark right\" },\n vertical: { description: \"Icon above, wordmark below\" },\n },\n color: {\n primary: {\n description: \"Yellow icon background, dark text (for light backgrounds)\",\n },\n black: {\n description: \"Dark icon background, light text (for dark backgrounds)\",\n },\n white: {\n description: \"Light icon background, dark text (for light backgrounds)\",\n },\n },\n} as const\n\nexport const NOVA_ENYA_LOGO_DEFAULT_VARIANTS = {\n variant: \"full\",\n orientation: \"horizontal\",\n color: \"primary\",\n} as const\n\nexport type EnyaLogoVariant = keyof typeof NOVA_ENYA_LOGO_VARIANTS.variant\nexport type EnyaLogoOrientation =\n keyof typeof NOVA_ENYA_LOGO_VARIANTS.orientation\nexport type EnyaLogoColor = keyof typeof NOVA_ENYA_LOGO_VARIANTS.color\n\nexport interface EnyaLogoProps extends React.SVGAttributes<SVGSVGElement> {\n /**\n * Logo variant\n * - `icon`: Brand icon with colored background square\n * - `wordmark`: \"Enya learning\" text only\n * - `full`: Icon and wordmark combined\n * @default \"full\"\n */\n variant?: EnyaLogoVariant\n /**\n * Layout orientation — only applies when `variant=\"full\"`\n * - `horizontal`: Icon left, wordmark right\n * - `vertical`: Icon above, wordmark below\n * @default \"horizontal\"\n */\n orientation?: EnyaLogoOrientation\n /**\n * Color scheme\n * - `primary`: Yellow (#FFBB00) icon, dark wordmark — for light/neutral backgrounds\n * - `black`: Dark icon with light mark, light wordmark — for dark backgrounds\n * - `white`: Light icon, dark wordmark — for light backgrounds\n * @default \"primary\"\n */\n color?: EnyaLogoColor\n}\n\n/**\n * Enya Learning logo component.\n *\n * @example Default full horizontal logo\n * ```tsx\n * <EnyaLogo className=\"w-40\" />\n * ```\n *\n * @example Icon only\n * ```tsx\n * <EnyaLogo variant=\"icon\" className=\"w-12\" />\n * ```\n *\n * @example Wordmark only\n * ```tsx\n * <EnyaLogo variant=\"wordmark\" className=\"w-48\" />\n * ```\n *\n * @example Vertical layout with primary color\n * ```tsx\n * <EnyaLogo variant=\"full\" orientation=\"vertical\" color=\"primary\" className=\"w-32\" />\n * ```\n *\n * @example Black variant for dark backgrounds\n * ```tsx\n * <EnyaLogo color=\"black\" className=\"w-40\" />\n * ```\n */\nexport const EnyaLogo = forwardRef<SVGSVGElement, EnyaLogoProps>(\n (\n {\n variant = NOVA_ENYA_LOGO_DEFAULT_VARIANTS.variant,\n orientation = NOVA_ENYA_LOGO_DEFAULT_VARIANTS.orientation,\n color = NOVA_ENYA_LOGO_DEFAULT_VARIANTS.color,\n className,\n ...props\n },\n ref\n ) => {\n const iconBg =\n color === \"primary\"\n ? ENYA_PRIMARY\n : color === \"black\"\n ? ENYA_DARK\n : ENYA_LIGHT\n const iconMark = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n const wordmarkFill = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n\n if (variant === \"icon\") {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 100 100\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning logo\"\n className={cn(className)}\n {...props}\n >\n <path d={ICON_BG_PATH} fill={iconBg} />\n {ICON_MARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={iconMark} />\n ))}\n </svg>\n )\n }\n\n if (variant === \"wordmark\") {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 350 53\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning wordmark\"\n className={cn(className)}\n {...props}\n >\n {WORDMARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={wordmarkFill} />\n ))}\n </svg>\n )\n }\n\n // Full logo\n if (orientation === \"vertical\") {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 150 66\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning logo\"\n className={cn(className)}\n {...props}\n >\n <path d={FULL_V_ICON_BG_PATH} fill={iconBg} />\n {FULL_V_ICON_MARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={iconMark} />\n ))}\n {FULL_V_WORDMARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={wordmarkFill} />\n ))}\n </svg>\n )\n }\n\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 150 27\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n aria-label=\"Enya Learning logo\"\n className={cn(className)}\n {...props}\n >\n <path d={FULL_H_ICON_BG_PATH} fill={iconBg} />\n {FULL_H_ICON_MARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={iconMark} />\n ))}\n {FULL_H_WORDMARK_PATHS.map((d, i) => (\n <path key={i} d={d} fill={wordmarkFill} />\n ))}\n </svg>\n )\n }\n)\n\nEnyaLogo.displayName = \"EnyaLogo\"\n\n// =============================================================================\n// SVG Generation Helper\n// =============================================================================\n\nexport interface GenerateEnyaLogoSvgOptions {\n /**\n * Logo variant\n * @default \"full\"\n */\n variant?: EnyaLogoVariant\n /**\n * Layout orientation — only applies when `variant=\"full\"`\n * @default \"horizontal\"\n */\n orientation?: EnyaLogoOrientation\n /**\n * Color scheme\n * @default \"primary\"\n */\n color?: EnyaLogoColor\n}\n\n/**\n * Generates SVG markup string for the Enya Learning logo.\n *\n * @example Copy icon SVG to clipboard\n * ```ts\n * const svg = generateEnyaLogoSvg({ variant: \"icon\" });\n * await navigator.clipboard.writeText(svg);\n * ```\n */\nexport function generateEnyaLogoSvg(\n options: GenerateEnyaLogoSvgOptions = {}\n): string {\n const {\n variant = \"full\",\n orientation = \"horizontal\",\n color = \"primary\",\n } = options\n\n const iconBg =\n color === \"primary\"\n ? ENYA_PRIMARY\n : color === \"black\"\n ? ENYA_DARK\n : ENYA_LIGHT\n const iconMark = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n const wordmarkFill = color === \"black\" ? ENYA_LIGHT : ENYA_DARK\n\n if (variant === \"icon\") {\n const markPaths = ICON_MARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${iconMark}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 100 100\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning logo\">\n <path d=\"${ICON_BG_PATH}\" fill=\"${iconBg}\"/>\n${markPaths}\n</svg>`\n }\n\n if (variant === \"wordmark\") {\n const textPaths = WORDMARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${wordmarkFill}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 350 53\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning wordmark\">\n${textPaths}\n</svg>`\n }\n\n if (orientation === \"vertical\") {\n const markPaths = FULL_V_ICON_MARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${iconMark}\"/>`\n ).join(\"\\n\")\n const textPaths = FULL_V_WORDMARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${wordmarkFill}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 150 66\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning logo\">\n <path d=\"${FULL_V_ICON_BG_PATH}\" fill=\"${iconBg}\"/>\n${markPaths}\n${textPaths}\n</svg>`\n }\n\n const markPaths = FULL_H_ICON_MARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${iconMark}\"/>`\n ).join(\"\\n\")\n const textPaths = FULL_H_WORDMARK_PATHS.map(\n (d) => ` <path d=\"${d}\" fill=\"${wordmarkFill}\"/>`\n ).join(\"\\n\")\n return `<svg viewBox=\"0 0 150 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"Enya Learning logo\">\n <path d=\"${FULL_H_ICON_BG_PATH}\" fill=\"${iconBg}\"/>\n${markPaths}\n${textPaths}\n</svg>`\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as f } from "../chunks/dist-o8x0ip0z71xkr2oh.js";
|
|
3
|
+
import { t as l } from "../chunks/utils-kyb5nny4y41y7hd8.js";
|
|
4
|
+
import { Separator as u } from "./separator.js";
|
|
5
|
+
import { Label as c } from "./label.js";
|
|
6
|
+
import { jsx as a, jsxs as m } from "react/jsx-runtime";
|
|
7
|
+
import { useMemo as p } from "react";
|
|
8
|
+
function k({ className: t, ...e }) {
|
|
9
|
+
return /* @__PURE__ */ a("fieldset", {
|
|
10
|
+
"data-slot": "field-set",
|
|
11
|
+
className: l("flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", t),
|
|
12
|
+
...e
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function y({ className: t, variant: e = "legend", ...o }) {
|
|
16
|
+
return /* @__PURE__ */ a("legend", {
|
|
17
|
+
"data-slot": "field-legend",
|
|
18
|
+
"data-variant": e,
|
|
19
|
+
className: l("mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base", t),
|
|
20
|
+
...o
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function F({ className: t, ...e }) {
|
|
24
|
+
return /* @__PURE__ */ a("div", {
|
|
25
|
+
"data-slot": "field-group",
|
|
26
|
+
className: l("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4", t),
|
|
27
|
+
...e
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
var g = f("group/field flex w-full gap-3 data-[invalid=true]:text-destructive", {
|
|
31
|
+
variants: { orientation: {
|
|
32
|
+
vertical: "flex-col *:w-full [&>.sr-only]:w-auto",
|
|
33
|
+
horizontal: "flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
|
|
34
|
+
responsive: "flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
|
|
35
|
+
} },
|
|
36
|
+
defaultVariants: { orientation: "vertical" }
|
|
37
|
+
});
|
|
38
|
+
function L({ className: t, orientation: e = "vertical", ...o }) {
|
|
39
|
+
return /* @__PURE__ */ a("div", {
|
|
40
|
+
role: "group",
|
|
41
|
+
"data-slot": "field",
|
|
42
|
+
"data-orientation": e,
|
|
43
|
+
className: l(g({ orientation: e }), t),
|
|
44
|
+
...o
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function S({ className: t, ...e }) {
|
|
48
|
+
return /* @__PURE__ */ a("div", {
|
|
49
|
+
"data-slot": "field-content",
|
|
50
|
+
className: l("group/field-content flex flex-1 flex-col gap-1 leading-snug", t),
|
|
51
|
+
...e
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function j({ className: t, ...e }) {
|
|
55
|
+
return /* @__PURE__ */ a(c, {
|
|
56
|
+
"data-slot": "field-label",
|
|
57
|
+
className: l("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col", t),
|
|
58
|
+
...e
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function z({ className: t, ...e }) {
|
|
62
|
+
return /* @__PURE__ */ a("div", {
|
|
63
|
+
"data-slot": "field-label",
|
|
64
|
+
className: l("flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50", t),
|
|
65
|
+
...e
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function E({ className: t, ...e }) {
|
|
69
|
+
return /* @__PURE__ */ a("p", {
|
|
70
|
+
"data-slot": "field-description",
|
|
71
|
+
className: l("text-start text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5", "last:mt-0 nth-last-2:-mt-1", "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", t),
|
|
72
|
+
...e
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function M({ children: t, className: e, ...o }) {
|
|
76
|
+
return /* @__PURE__ */ m("div", {
|
|
77
|
+
"data-slot": "field-separator",
|
|
78
|
+
"data-content": !!t,
|
|
79
|
+
className: l("relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2", e),
|
|
80
|
+
...o,
|
|
81
|
+
children: [/* @__PURE__ */ a(u, { className: "absolute inset-0 top-1/2" }), t && /* @__PURE__ */ a("span", {
|
|
82
|
+
className: "relative mx-auto block w-fit bg-background px-2 text-muted-foreground",
|
|
83
|
+
"data-slot": "field-separator-content",
|
|
84
|
+
children: t
|
|
85
|
+
})]
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function V({ className: t, children: e, errors: o, ...s }) {
|
|
89
|
+
const i = p(() => {
|
|
90
|
+
if (e) return e;
|
|
91
|
+
if (!o?.length) return null;
|
|
92
|
+
const d = [...new Map(o.map((r) => [r?.message, r])).values()];
|
|
93
|
+
return d?.length == 1 ? d[0]?.message : /* @__PURE__ */ a("ul", {
|
|
94
|
+
className: "ms-4 flex list-disc flex-col gap-1",
|
|
95
|
+
children: d.map((r, n) => r?.message && /* @__PURE__ */ a("li", { children: r.message }, n))
|
|
96
|
+
});
|
|
97
|
+
}, [e, o]);
|
|
98
|
+
return i ? /* @__PURE__ */ a("div", {
|
|
99
|
+
role: "alert",
|
|
100
|
+
"data-slot": "field-error",
|
|
101
|
+
className: l("text-sm font-normal text-destructive", t),
|
|
102
|
+
...s,
|
|
103
|
+
children: i
|
|
104
|
+
}) : null;
|
|
105
|
+
}
|
|
106
|
+
export {
|
|
107
|
+
L as Field,
|
|
108
|
+
S as FieldContent,
|
|
109
|
+
E as FieldDescription,
|
|
110
|
+
V as FieldError,
|
|
111
|
+
F as FieldGroup,
|
|
112
|
+
j as FieldLabel,
|
|
113
|
+
y as FieldLegend,
|
|
114
|
+
M as FieldSeparator,
|
|
115
|
+
k as FieldSet,
|
|
116
|
+
z as FieldTitle
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
//# sourceMappingURL=field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.js","names":[],"sources":["../../src/components/field/field.tsx"],"sourcesContent":["import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"../label\"\nimport { Separator } from \"../separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field flex w-full gap-3 data-[invalid=true]:text-destructive\",\n {\n variants: {\n orientation: {\n vertical: \"flex-col *:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center has-[>[data-slot=field-content]]:items-start *:data-[slot=field-label]:flex-auto has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col *:w-full @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:*:data-[slot=field-label]:flex-auto [&>.sr-only]:w-auto @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border *:data-[slot=field]:p-4 dark:has-data-checked:border-primary/20 dark:has-data-checked:bg-primary/10\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-start text-sm leading-normal font-normal text-muted-foreground group-has-data-horizontal/field:text-balance [[data-variant=legend]+&]:-mt-1.5\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"relative mx-auto block w-fit bg-background px-2 text-muted-foreground\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ms-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-sm font-normal text-destructive\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as s } from "../chunks/utils-kyb5nny4y41y7hd8.js";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
import { PreviewCard as e } from "@base-ui/react/preview-card";
|
|
5
|
+
function c({ ...o }) {
|
|
6
|
+
return /* @__PURE__ */ t(e.Root, {
|
|
7
|
+
"data-slot": "hover-card",
|
|
8
|
+
...o
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function p({ ...o }) {
|
|
12
|
+
return /* @__PURE__ */ t(e.Trigger, {
|
|
13
|
+
"data-slot": "hover-card-trigger",
|
|
14
|
+
...o
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function u({ className: o, side: r = "bottom", sideOffset: a = 4, align: i = "center", alignOffset: d = 4, ...n }) {
|
|
18
|
+
return /* @__PURE__ */ t(e.Portal, {
|
|
19
|
+
"data-slot": "hover-card-portal",
|
|
20
|
+
children: /* @__PURE__ */ t(e.Positioner, {
|
|
21
|
+
align: i,
|
|
22
|
+
alignOffset: d,
|
|
23
|
+
side: r,
|
|
24
|
+
sideOffset: a,
|
|
25
|
+
className: "isolate z-50",
|
|
26
|
+
children: /* @__PURE__ */ t(e.Popup, {
|
|
27
|
+
"data-slot": "hover-card-content",
|
|
28
|
+
className: s("z-50 w-72 origin-(--transform-origin) rounded-2xl bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", o),
|
|
29
|
+
...n
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
c as HoverCard,
|
|
36
|
+
u as HoverCardContent,
|
|
37
|
+
p as HoverCardTrigger
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=hover-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-card.js","names":[],"sources":["../../src/components/hover-card/hover-card.tsx"],"sourcesContent":["\"use client\"\n\nimport { PreviewCard as PreviewCardPrimitive } from \"@base-ui/react/preview-card\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction HoverCard({ ...props }: PreviewCardPrimitive.Root.Props) {\n return <PreviewCardPrimitive.Root data-slot=\"hover-card\" {...props} />\n}\n\nfunction HoverCardTrigger({ ...props }: PreviewCardPrimitive.Trigger.Props) {\n return (\n <PreviewCardPrimitive.Trigger data-slot=\"hover-card-trigger\" {...props} />\n )\n}\n\nfunction HoverCardContent({\n className,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 4,\n ...props\n}: PreviewCardPrimitive.Popup.Props &\n Pick<\n PreviewCardPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <PreviewCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <PreviewCardPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <PreviewCardPrimitive.Popup\n data-slot=\"hover-card-content\"\n className={cn(\n \"z-50 w-72 origin-(--transform-origin) rounded-2xl bg-popover p-4 text-sm text-popover-foreground shadow-2xl ring-1 ring-foreground/5 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n )\n}\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n"],"mappings":";;;;AAMA,SAAS,EAAU,EAAE,GAAG,EAAA,GAA0C;AAChE,SAAO,gBAAA,EAAC,EAAqB,MAAtB;AAAA,IAA2B,aAAU;AAAA,IAAa,GAAI;AAAA,EAAQ,CAAA;AACvE;AAEA,SAAS,EAAiB,EAAE,GAAG,EAAA,GAA6C;AAC1E,SACE,gBAAA,EAAC,EAAqB,SAAtB;AAAA,IAA8B,aAAU;AAAA,IAAqB,GAAI;AAAA,EAAQ,CAAA;AAE7E;AAEA,SAAS,EAAiB,EACxB,WAAA,GACA,MAAA,IAAO,UACP,YAAA,IAAa,GACb,OAAA,IAAQ,UACR,aAAA,IAAc,GACd,GAAG,EAAA,GAKA;AACH,SACE,gBAAA,EAAC,EAAqB,QAAtB;AAAA,IAA6B,aAAU;AAAA,cACrC,gBAAA,EAAC,EAAqB,YAAtB;AAAA,MACS,OAAA;AAAA,MACM,aAAA;AAAA,MACP,MAAA;AAAA,MACM,YAAA;AAAA,MACZ,WAAU;AAAA,gBAEV,gBAAA,EAAC,EAAqB,OAAtB;AAAA,QACE,aAAU;AAAA,QACV,WAAW,EACT,+hBACA,CACF;AAAA,QACA,GAAI;AAAA,MACL,CAAA;AAAA,IAC8B,CAAA;AAAA,EACN,CAAA;AAEjC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { t as s } from "../chunks/dist-o8x0ip0z71xkr2oh.js";
|
|
3
|
+
import { t as n } from "../chunks/utils-kyb5nny4y41y7hd8.js";
|
|
4
|
+
import { Button as u } from "./button.js";
|
|
5
|
+
import { Input as l } from "./input.js";
|
|
6
|
+
import { Textarea as d } from "./textarea.js";
|
|
7
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
8
|
+
import "react";
|
|
9
|
+
function k({ className: a, ...t }) {
|
|
10
|
+
return /* @__PURE__ */ r("div", {
|
|
11
|
+
"data-slot": "input-group",
|
|
12
|
+
role: "group",
|
|
13
|
+
className: n("group/input-group relative flex h-9 w-full min-w-0 items-center rounded-4xl border border-input bg-input/30 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-2xl has-data-[align=block-start]:rounded-2xl has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-xl has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pe-1.5 has-[>[data-align=inline-start]]:[&>input]:ps-1.5", a),
|
|
14
|
+
...t
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
var p = s("flex h-auto cursor-text items-center justify-center gap-2 py-2 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-4xl **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1.5 [&>svg:not([class*='size-'])]:size-4", {
|
|
18
|
+
variants: { align: {
|
|
19
|
+
"inline-start": "order-first ps-3 has-[>button]:-ms-1 has-[>kbd]:ms-[-0.15rem]",
|
|
20
|
+
"inline-end": "order-last pe-3 has-[>button]:-me-1 has-[>kbd]:me-[-0.15rem]",
|
|
21
|
+
"block-start": "order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-3 [.border-b]:pb-3",
|
|
22
|
+
"block-end": "order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-3 [.border-t]:pt-3"
|
|
23
|
+
} },
|
|
24
|
+
defaultVariants: { align: "inline-start" }
|
|
25
|
+
});
|
|
26
|
+
function z({ className: a, align: t = "inline-start", ...e }) {
|
|
27
|
+
return /* @__PURE__ */ r("div", {
|
|
28
|
+
role: "group",
|
|
29
|
+
"data-slot": "input-group-addon",
|
|
30
|
+
"data-align": t,
|
|
31
|
+
className: n(p({ align: t }), a),
|
|
32
|
+
onClick: (o) => {
|
|
33
|
+
o.target.closest("button") || o.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
34
|
+
},
|
|
35
|
+
...e
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
var c = s("flex items-center gap-2 rounded-4xl text-sm shadow-none", {
|
|
39
|
+
variants: { size: {
|
|
40
|
+
xs: "h-6 gap-1 px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
|
|
41
|
+
sm: "",
|
|
42
|
+
"icon-xs": "size-6 p-0 has-[>svg]:p-0",
|
|
43
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0"
|
|
44
|
+
} },
|
|
45
|
+
defaultVariants: { size: "xs" }
|
|
46
|
+
});
|
|
47
|
+
function w({ className: a, type: t = "button", variant: e = "ghost", size: o = "xs", ...i }) {
|
|
48
|
+
return /* @__PURE__ */ r(u, {
|
|
49
|
+
type: t,
|
|
50
|
+
"data-size": o,
|
|
51
|
+
variant: e,
|
|
52
|
+
className: n(c({ size: o }), a),
|
|
53
|
+
...i
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function G({ className: a, ...t }) {
|
|
57
|
+
return /* @__PURE__ */ r("span", {
|
|
58
|
+
className: n("flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", a),
|
|
59
|
+
...t
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function I({ className: a, ...t }) {
|
|
63
|
+
return /* @__PURE__ */ r(l, {
|
|
64
|
+
"data-slot": "input-group-control",
|
|
65
|
+
className: n("flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent", a),
|
|
66
|
+
...t
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function y({ className: a, ...t }) {
|
|
70
|
+
return /* @__PURE__ */ r(d, {
|
|
71
|
+
"data-slot": "input-group-control",
|
|
72
|
+
className: n("flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent", a),
|
|
73
|
+
...t
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
export {
|
|
77
|
+
k as InputGroup,
|
|
78
|
+
z as InputGroupAddon,
|
|
79
|
+
w as InputGroupButton,
|
|
80
|
+
I as InputGroupInput,
|
|
81
|
+
G as InputGroupText,
|
|
82
|
+
y as InputGroupTextarea
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=input-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-group.js","names":[],"sources":["../../src/components/input-group/input-group.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"../button\"\nimport { Input } from \"../input\"\nimport { Textarea } from \"../textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \"group/input-group relative flex h-9 w-full min-w-0 items-center rounded-4xl border border-input bg-input/30 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-2xl has-data-[align=block-start]:rounded-2xl has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-[3px] has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-[3px] has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[textarea]:rounded-xl has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pe-1.5 has-[>[data-align=inline-start]]:[&>input]:ps-1.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"flex h-auto cursor-text items-center justify-center gap-2 py-2 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-4xl **:data-[slot=kbd]:bg-muted-foreground/10 **:data-[slot=kbd]:px-1.5 [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first ps-3 has-[>button]:-ms-1 has-[>kbd]:ms-[-0.15rem]\",\n \"inline-end\":\n \"order-last pe-3 has-[>button]:-me-1 has-[>kbd]:me-[-0.15rem]\",\n \"block-start\":\n \"order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-3 [.border-b]:pb-3\",\n \"block-end\":\n \"order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-3 [.border-t]:pt-3\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 rounded-4xl text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 px-1.5 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"\",\n \"icon-xs\": \"size-6 p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\" | \"type\"> &\n VariantProps<typeof inputGroupButtonVariants> & {\n type?: \"button\" | \"submit\" | \"reset\"\n }) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n"],"mappings":";;;;;;;;AAUA,SAAS,EAAW,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACxE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,MAAK;AAAA,IACL,WAAW,EACT,wnCACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,IAAM,IAA0B,EAC9B,kTACA;AAAA,EACE,UAAU,EACR,OAAO;AAAA,IACL,gBACE;AAAA,IACF,cACE;AAAA,IACF,eACE;AAAA,IACF,aACE;AAAA,EACJ,EACF;AAAA,EACA,iBAAiB,EACf,OAAO,eACT;AACF,CACF;AAEA,SAAS,EAAgB,EACvB,WAAA,GACA,OAAA,IAAQ,gBACR,GAAG,EAAA,GAC0E;AAC7E,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,MAAK;AAAA,IACL,aAAU;AAAA,IACV,cAAY;AAAA,IACZ,WAAW,EAAG,EAAwB,EAAE,OAAA,EAAM,CAAC,GAAG,CAAS;AAAA,IAC3D,SAAA,CAAU,MAAM;AACd,MAAK,EAAE,OAAuB,QAAQ,QAAQ,KAG9C,EAAE,cAAc,eAAe,cAAc,OAAO,GAAG,MAAM;AAAA,IAC/D;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,IAAM,IAA2B,EAC/B,2DACA;AAAA,EACE,UAAU,EACR,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,WAAW;AAAA,IACX,WAAW;AAAA,EACb,EACF;AAAA,EACA,iBAAiB,EACf,MAAM,KACR;AACF,CACF;AAEA,SAAS,EAAiB,EACxB,WAAA,GACA,MAAA,IAAO,UACP,SAAA,IAAU,SACV,MAAA,IAAO,MACP,GAAG,EAAA,GAIA;AACH,SACE,gBAAA,EAAC,GAAD;AAAA,IACQ,MAAA;AAAA,IACN,aAAW;AAAA,IACF,SAAA;AAAA,IACT,WAAW,EAAG,EAAyB,EAAE,MAAA,EAAK,CAAC,GAAG,CAAS;AAAA,IAC3D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAe,EAAE,WAAA,GAAW,GAAG,EAAA,GAAuC;AAC7E,SACE,gBAAA,EAAC,QAAD;AAAA,IACE,WAAW,EACT,0HACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAgB,EACvB,WAAA,GACA,GAAG,EAAA,GAC6B;AAChC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,+HACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAmB,EAC1B,WAAA,GACA,GAAG,EAAA,GACgC;AACnC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,gJACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL"}
|