iryx-ui 0.18.5 → 0.19.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 +37 -0
- package/dist/component-names.d.ts +8 -0
- package/dist/component-names.js +10 -2
- package/dist/marketing/BrowserFrame.js +5 -0
- package/dist/marketing/BrowserFrame.vue.d.ts +40 -0
- package/dist/marketing/BrowserFrame.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/marketing/FeatureCard.js +5 -0
- package/dist/marketing/FeatureCard.vue.d.ts +40 -0
- package/dist/marketing/FeatureCard.vue_vue_type_script_setup_true_lang.js +55 -0
- package/dist/marketing/Hero.js +5 -0
- package/dist/marketing/Hero.vue.d.ts +64 -0
- package/dist/marketing/Hero.vue_vue_type_script_setup_true_lang.js +94 -0
- package/dist/marketing/PricingCard.js +5 -0
- package/dist/marketing/PricingCard.vue.d.ts +70 -0
- package/dist/marketing/PricingCard.vue_vue_type_script_setup_true_lang.js +94 -0
- package/dist/marketing/PricingTable.js +5 -0
- package/dist/marketing/PricingTable.vue.d.ts +41 -0
- package/dist/marketing/PricingTable.vue_vue_type_script_setup_true_lang.js +57 -0
- package/dist/marketing/Section.js +5 -0
- package/dist/marketing/Section.vue.d.ts +53 -0
- package/dist/marketing/Section.vue_vue_type_script_setup_true_lang.js +78 -0
- package/dist/marketing/TestimonialCard.js +5 -0
- package/dist/marketing/TestimonialCard.vue.d.ts +41 -0
- package/dist/marketing/TestimonialCard.vue_vue_type_script_setup_true_lang.js +61 -0
- package/dist/marketing/index.d.ts +7 -0
- package/dist/marketing/index.js +20 -0
- package/dist/marketing.d.ts +30 -0
- package/dist/marketing.js +9 -0
- package/dist/nuxt.d.ts +5 -0
- package/dist/nuxt.js +19 -13
- package/dist/plugin.d.ts +6 -1
- package/dist/plugin.js +3 -2
- package/dist/theme/accordion.js +1 -1
- package/dist/theme/alert.js +1 -1
- package/dist/theme/app-shell.js +1 -1
- package/dist/theme/banner.js +1 -1
- package/dist/theme/breadcrumb.js +1 -1
- package/dist/theme/browser-frame.d.ts +59 -0
- package/dist/theme/browser-frame.js +20 -0
- package/dist/theme/calendar.js +2 -2
- package/dist/theme/checkbox.js +1 -1
- package/dist/theme/collapsible.js +1 -1
- package/dist/theme/color-picker.js +2 -2
- package/dist/theme/combobox.js +2 -2
- package/dist/theme/date-picker.js +1 -1
- package/dist/theme/dialog.js +1 -1
- package/dist/theme/drawer.js +1 -1
- package/dist/theme/editable.js +1 -1
- package/dist/theme/feature-card.d.ts +41 -0
- package/dist/theme/feature-card.js +20 -0
- package/dist/theme/file-upload.js +1 -1
- package/dist/theme/hero.d.ts +98 -0
- package/dist/theme/hero.js +45 -0
- package/dist/theme/input.d.ts +2 -2
- package/dist/theme/input.js +2 -2
- package/dist/theme/menubar.js +1 -1
- package/dist/theme/navigation-menu.js +1 -1
- package/dist/theme/password-input.js +1 -1
- package/dist/theme/pin-input.js +1 -1
- package/dist/theme/popover.js +1 -1
- package/dist/theme/pricing-card.d.ts +62 -0
- package/dist/theme/pricing-card.js +23 -0
- package/dist/theme/radio-group.js +1 -1
- package/dist/theme/section.d.ts +140 -0
- package/dist/theme/section.js +48 -0
- package/dist/theme/sidebar.js +1 -1
- package/dist/theme/signature-pad.js +1 -1
- package/dist/theme/stepper.js +1 -1
- package/dist/theme/switch.js +1 -1
- package/dist/theme/table.js +2 -2
- package/dist/theme/tabs.js +1 -1
- package/dist/theme/tags-input.js +2 -2
- package/dist/theme/testimonial-card.d.ts +53 -0
- package/dist/theme/testimonial-card.js +20 -0
- package/dist/theme/toast.js +2 -2
- package/dist/theme/tree.js +1 -1
- package/package.json +5 -1
- package/theme.css +172 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { useIryxUiConfig as e } from "../config.js";
|
|
2
|
+
import t from "./PricingCard.js";
|
|
3
|
+
import { Fragment as n, computed as r, createBlock as i, createElementBlock as a, defineComponent as o, mergeProps as s, normalizeClass as c, openBlock as l, renderList as u, renderSlot as d, unref as f, withCtx as p } from "vue";
|
|
4
|
+
import { Primitive as m } from "reka-ui";
|
|
5
|
+
//#region src/marketing/PricingTable.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
+
var h = /*@__PURE__*/ o({
|
|
7
|
+
__name: "PricingTable",
|
|
8
|
+
props: {
|
|
9
|
+
as: { default: "div" },
|
|
10
|
+
plans: {},
|
|
11
|
+
badge: {},
|
|
12
|
+
columns: {},
|
|
13
|
+
unstyled: {
|
|
14
|
+
type: Boolean,
|
|
15
|
+
default: void 0
|
|
16
|
+
},
|
|
17
|
+
class: { type: [
|
|
18
|
+
String,
|
|
19
|
+
Boolean,
|
|
20
|
+
null,
|
|
21
|
+
Array
|
|
22
|
+
] }
|
|
23
|
+
},
|
|
24
|
+
emits: ["select"],
|
|
25
|
+
setup(o, { emit: h }) {
|
|
26
|
+
let g = o, _ = h, v = e(), y = r(() => g.unstyled ?? v.unstyled), b = {
|
|
27
|
+
1: "",
|
|
28
|
+
2: "sm:grid-cols-2",
|
|
29
|
+
3: "lg:grid-cols-3",
|
|
30
|
+
4: "sm:grid-cols-2 lg:grid-cols-4"
|
|
31
|
+
}, x = r(() => {
|
|
32
|
+
let e = g.columns ?? Math.min(g.plans?.length ?? 1, 4);
|
|
33
|
+
return y.value ? g.class : [
|
|
34
|
+
"grid items-start gap-4",
|
|
35
|
+
b[e],
|
|
36
|
+
g.class
|
|
37
|
+
];
|
|
38
|
+
});
|
|
39
|
+
return (e, r) => (l(), i(f(m), {
|
|
40
|
+
as: g.as,
|
|
41
|
+
class: c(x.value)
|
|
42
|
+
}, {
|
|
43
|
+
default: p(() => [d(e.$slots, "default", {}, () => [(l(!0), a(n, null, u(g.plans, (e, n) => (l(), i(t, s({ key: e.id ?? e.name ?? n }, { ref_for: !0 }, e, {
|
|
44
|
+
badge: e.badge ?? g.badge,
|
|
45
|
+
unstyled: g.unstyled,
|
|
46
|
+
onSelect: (t) => _("select", e)
|
|
47
|
+
}), null, 16, [
|
|
48
|
+
"badge",
|
|
49
|
+
"unstyled",
|
|
50
|
+
"onSelect"
|
|
51
|
+
]))), 128))])]),
|
|
52
|
+
_: 3
|
|
53
|
+
}, 8, ["as", "class"]));
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
//#endregion
|
|
57
|
+
export { h as default };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { ClassValue } from '../class-value';
|
|
2
|
+
export interface SectionProps {
|
|
3
|
+
/** Render as a different element or component. */
|
|
4
|
+
as?: string;
|
|
5
|
+
/** Small line above the heading, e.g. `Pricing`. */
|
|
6
|
+
eyebrow?: string;
|
|
7
|
+
heading?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
/** `muted` tints the band, to separate it from the sections either side. */
|
|
10
|
+
tone?: 'default' | 'muted';
|
|
11
|
+
/** Rule along the top edge. */
|
|
12
|
+
bordered?: boolean;
|
|
13
|
+
align?: 'start' | 'center';
|
|
14
|
+
/** Vertical rhythm. `none` leaves it to you. */
|
|
15
|
+
padding?: 'none' | 'sm' | 'md' | 'lg';
|
|
16
|
+
/** Maximum content width, passed to the container. */
|
|
17
|
+
size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
18
|
+
/** Skip built-in classes; you take over styling entirely. */
|
|
19
|
+
unstyled?: boolean;
|
|
20
|
+
class?: ClassValue;
|
|
21
|
+
/** Override classes per slot, e.g. `{ heading: 'text-5xl' }`. */
|
|
22
|
+
ui?: {
|
|
23
|
+
root?: string;
|
|
24
|
+
container?: string;
|
|
25
|
+
header?: string;
|
|
26
|
+
eyebrow?: string;
|
|
27
|
+
heading?: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
body?: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
declare var __VLS_14: {}, __VLS_16: {}, __VLS_18: {}, __VLS_20: {};
|
|
33
|
+
type __VLS_Slots = {} & {
|
|
34
|
+
eyebrow?: (props: typeof __VLS_14) => any;
|
|
35
|
+
} & {
|
|
36
|
+
heading?: (props: typeof __VLS_16) => any;
|
|
37
|
+
} & {
|
|
38
|
+
description?: (props: typeof __VLS_18) => any;
|
|
39
|
+
} & {
|
|
40
|
+
default?: (props: typeof __VLS_20) => any;
|
|
41
|
+
};
|
|
42
|
+
declare const __VLS_base: import("vue").DefineComponent<SectionProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SectionProps> & Readonly<{}>, {
|
|
43
|
+
unstyled: boolean;
|
|
44
|
+
as: string;
|
|
45
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
46
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
47
|
+
declare const _default: typeof __VLS_export;
|
|
48
|
+
export default _default;
|
|
49
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
50
|
+
new (): {
|
|
51
|
+
$slots: S;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { useIryxUiConfig as e } from "../config.js";
|
|
2
|
+
import t from "../components/Container.js";
|
|
3
|
+
import { sectionTheme as n } from "../theme/section.js";
|
|
4
|
+
import { computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createTextVNode as s, createVNode as c, defineComponent as l, normalizeClass as u, openBlock as d, renderSlot as f, toDisplayString as p, unref as m, useSlots as h, withCtx as g } from "vue";
|
|
5
|
+
import { Primitive as _ } from "reka-ui";
|
|
6
|
+
//#region src/marketing/Section.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
+
var v = /*@__PURE__*/ l({
|
|
8
|
+
__name: "Section",
|
|
9
|
+
props: {
|
|
10
|
+
as: { default: "section" },
|
|
11
|
+
eyebrow: {},
|
|
12
|
+
heading: {},
|
|
13
|
+
description: {},
|
|
14
|
+
tone: {},
|
|
15
|
+
bordered: { type: Boolean },
|
|
16
|
+
align: {},
|
|
17
|
+
padding: {},
|
|
18
|
+
size: {},
|
|
19
|
+
unstyled: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: void 0
|
|
22
|
+
},
|
|
23
|
+
class: { type: [
|
|
24
|
+
String,
|
|
25
|
+
Boolean,
|
|
26
|
+
null,
|
|
27
|
+
Array
|
|
28
|
+
] },
|
|
29
|
+
ui: {}
|
|
30
|
+
},
|
|
31
|
+
setup(l) {
|
|
32
|
+
let v = l, y = h(), b = e(), x = r(() => v.unstyled ?? b.unstyled), S = r(() => !!(v.eyebrow ?? v.heading ?? v.description) || !!(y.eyebrow ?? y.heading ?? y.description)), C = r(() => n({
|
|
33
|
+
tone: v.tone,
|
|
34
|
+
bordered: v.bordered,
|
|
35
|
+
align: v.align,
|
|
36
|
+
padding: v.padding,
|
|
37
|
+
hasHeader: S.value
|
|
38
|
+
}));
|
|
39
|
+
function w(e, t) {
|
|
40
|
+
return x.value ? [v.ui?.[e], t] : C.value[e]({ class: [v.ui?.[e], t] });
|
|
41
|
+
}
|
|
42
|
+
let T = r(() => w("root", v.class));
|
|
43
|
+
return (e, n) => (d(), i(m(_), {
|
|
44
|
+
as: v.as,
|
|
45
|
+
class: u(T.value)
|
|
46
|
+
}, {
|
|
47
|
+
default: g(() => [c(t, {
|
|
48
|
+
size: v.size,
|
|
49
|
+
class: u(v.ui?.container)
|
|
50
|
+
}, {
|
|
51
|
+
default: g(() => [S.value ? (d(), o("div", {
|
|
52
|
+
key: 0,
|
|
53
|
+
class: u(w("header"))
|
|
54
|
+
}, [
|
|
55
|
+
v.eyebrow || m(y).eyebrow ? (d(), o("p", {
|
|
56
|
+
key: 0,
|
|
57
|
+
class: u(w("eyebrow"))
|
|
58
|
+
}, [f(e.$slots, "eyebrow", {}, () => [s(p(v.eyebrow), 1)])], 2)) : a("", !0),
|
|
59
|
+
v.heading || m(y).heading ? (d(), o("h2", {
|
|
60
|
+
key: 1,
|
|
61
|
+
class: u(w("heading"))
|
|
62
|
+
}, [f(e.$slots, "heading", {}, () => [s(p(v.heading), 1)])], 2)) : a("", !0),
|
|
63
|
+
v.description || m(y).description ? (d(), o("p", {
|
|
64
|
+
key: 2,
|
|
65
|
+
class: u(w("description"))
|
|
66
|
+
}, [f(e.$slots, "description", {}, () => [s(p(v.description), 1)])], 2)) : a("", !0)
|
|
67
|
+
], 2)) : a("", !0), m(y).default ? (d(), o("div", {
|
|
68
|
+
key: 1,
|
|
69
|
+
class: u(w("body"))
|
|
70
|
+
}, [f(e.$slots, "default")], 2)) : a("", !0)]),
|
|
71
|
+
_: 3
|
|
72
|
+
}, 8, ["size", "class"])]),
|
|
73
|
+
_: 3
|
|
74
|
+
}, 8, ["as", "class"]));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
//#endregion
|
|
78
|
+
export { v as default };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { ClassValue } from '../class-value';
|
|
2
|
+
export interface TestimonialCardProps {
|
|
3
|
+
/** What they said. Curly quotes are added around it. */
|
|
4
|
+
quote?: string;
|
|
5
|
+
/** Who said it. Also derives the avatar's initials. */
|
|
6
|
+
name?: string;
|
|
7
|
+
/** Their job, company, or both. */
|
|
8
|
+
role?: string;
|
|
9
|
+
/** Their photo. Initials stand in without one. */
|
|
10
|
+
avatar?: string;
|
|
11
|
+
size?: 'sm' | 'md' | 'lg';
|
|
12
|
+
/** Skip built-in classes; you take over styling entirely. */
|
|
13
|
+
unstyled?: boolean;
|
|
14
|
+
class?: ClassValue;
|
|
15
|
+
/** Override classes per slot, e.g. `{ quote: 'italic' }`. */
|
|
16
|
+
ui?: {
|
|
17
|
+
root?: string;
|
|
18
|
+
quote?: string;
|
|
19
|
+
author?: string;
|
|
20
|
+
identity?: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
role?: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
declare var __VLS_8: {}, __VLS_11: {};
|
|
26
|
+
type __VLS_Slots = {} & {
|
|
27
|
+
default?: (props: typeof __VLS_8) => any;
|
|
28
|
+
} & {
|
|
29
|
+
author?: (props: typeof __VLS_11) => any;
|
|
30
|
+
};
|
|
31
|
+
declare const __VLS_base: import("vue").DefineComponent<TestimonialCardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<TestimonialCardProps> & Readonly<{}>, {
|
|
32
|
+
unstyled: boolean;
|
|
33
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
34
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
35
|
+
declare const _default: typeof __VLS_export;
|
|
36
|
+
export default _default;
|
|
37
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
38
|
+
new (): {
|
|
39
|
+
$slots: S;
|
|
40
|
+
};
|
|
41
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { useIryxUiConfig as e } from "../config.js";
|
|
2
|
+
import t from "../components/Avatar.js";
|
|
3
|
+
import n from "../components/Card.js";
|
|
4
|
+
import { testimonialCardTheme as r } from "../theme/testimonial-card.js";
|
|
5
|
+
import { computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createSlots as l, createTextVNode as u, createVNode as d, defineComponent as f, normalizeClass as p, openBlock as m, renderSlot as h, toDisplayString as g, unref as _, useSlots as v, withCtx as y } from "vue";
|
|
6
|
+
//#region src/marketing/TestimonialCard.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
+
var b = /*@__PURE__*/ f({
|
|
8
|
+
__name: "TestimonialCard",
|
|
9
|
+
props: {
|
|
10
|
+
quote: {},
|
|
11
|
+
name: {},
|
|
12
|
+
role: {},
|
|
13
|
+
avatar: {},
|
|
14
|
+
size: {},
|
|
15
|
+
unstyled: {
|
|
16
|
+
type: Boolean,
|
|
17
|
+
default: void 0
|
|
18
|
+
},
|
|
19
|
+
class: { type: [
|
|
20
|
+
String,
|
|
21
|
+
Boolean,
|
|
22
|
+
null,
|
|
23
|
+
Array
|
|
24
|
+
] },
|
|
25
|
+
ui: {}
|
|
26
|
+
},
|
|
27
|
+
setup(f) {
|
|
28
|
+
let b = f, x = v(), S = e(), C = i(() => b.unstyled ?? S.unstyled), w = i(() => r({ size: b.size }));
|
|
29
|
+
function T(e, t) {
|
|
30
|
+
return C.value ? [b.ui?.[e], t] : w.value[e]({ class: [b.ui?.[e], t] });
|
|
31
|
+
}
|
|
32
|
+
let E = i(() => !!(b.name ?? b.role) || !!x.author);
|
|
33
|
+
return (e, r) => (m(), a(n, {
|
|
34
|
+
unstyled: b.unstyled,
|
|
35
|
+
class: p(T("root", b.class))
|
|
36
|
+
}, l({
|
|
37
|
+
default: y(() => [b.quote || _(x).default ? (m(), s("blockquote", {
|
|
38
|
+
key: 0,
|
|
39
|
+
class: p(T("quote"))
|
|
40
|
+
}, [h(e.$slots, "default", {}, () => [u(" “" + g(b.quote) + "” ", 1)])], 2)) : o("", !0)]),
|
|
41
|
+
_: 2
|
|
42
|
+
}, [E.value ? {
|
|
43
|
+
name: "footer",
|
|
44
|
+
fn: y(() => [h(e.$slots, "author", {}, () => [c("div", { class: p(T("author")) }, [d(t, {
|
|
45
|
+
src: b.avatar,
|
|
46
|
+
name: b.name,
|
|
47
|
+
alt: "",
|
|
48
|
+
size: "sm"
|
|
49
|
+
}, null, 8, ["src", "name"]), c("div", { class: p(T("identity")) }, [b.name ? (m(), s("p", {
|
|
50
|
+
key: 0,
|
|
51
|
+
class: p(T("name"))
|
|
52
|
+
}, g(b.name), 3)) : o("", !0), b.role ? (m(), s("p", {
|
|
53
|
+
key: 1,
|
|
54
|
+
class: p(T("role"))
|
|
55
|
+
}, g(b.role), 3)) : o("", !0)], 2)], 2)])]),
|
|
56
|
+
key: "0"
|
|
57
|
+
} : void 0]), 1032, ["unstyled", "class"]));
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
//#endregion
|
|
61
|
+
export { b as default };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { default as BrowserFrame } from './BrowserFrame.vue';
|
|
2
|
+
export { default as FeatureCard } from './FeatureCard.vue';
|
|
3
|
+
export { default as Hero } from './Hero.vue';
|
|
4
|
+
export { default as PricingCard } from './PricingCard.vue';
|
|
5
|
+
export { default as PricingTable } from './PricingTable.vue';
|
|
6
|
+
export { default as Section } from './Section.vue';
|
|
7
|
+
export { default as TestimonialCard } from './TestimonialCard.vue';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { __exportAll as e } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import t from "./BrowserFrame.js";
|
|
3
|
+
import n from "./FeatureCard.js";
|
|
4
|
+
import r from "./Hero.js";
|
|
5
|
+
import i from "./PricingCard.js";
|
|
6
|
+
import a from "./PricingTable.js";
|
|
7
|
+
import o from "./Section.js";
|
|
8
|
+
import s from "./TestimonialCard.js";
|
|
9
|
+
//#region src/marketing/index.ts
|
|
10
|
+
var c = /* @__PURE__ */ e({
|
|
11
|
+
BrowserFrame: () => t,
|
|
12
|
+
FeatureCard: () => n,
|
|
13
|
+
Hero: () => r,
|
|
14
|
+
PricingCard: () => i,
|
|
15
|
+
PricingTable: () => a,
|
|
16
|
+
Section: () => o,
|
|
17
|
+
TestimonialCard: () => s
|
|
18
|
+
});
|
|
19
|
+
//#endregion
|
|
20
|
+
export { c as marketing_exports };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as marketingComponents from './marketing/index';
|
|
2
|
+
export type { BrowserFrameProps } from './marketing/BrowserFrame.vue';
|
|
3
|
+
export type { FeatureCardProps } from './marketing/FeatureCard.vue';
|
|
4
|
+
export type { HeroProps } from './marketing/Hero.vue';
|
|
5
|
+
export * from './marketing/index';
|
|
6
|
+
export type { PricingCardProps } from './marketing/PricingCard.vue';
|
|
7
|
+
export type { PricingPlan, PricingTableProps } from './marketing/PricingTable.vue';
|
|
8
|
+
export type { SectionProps } from './marketing/Section.vue';
|
|
9
|
+
export type { TestimonialCardProps } from './marketing/TestimonialCard.vue';
|
|
10
|
+
/**
|
|
11
|
+
* Every marketing component, keyed by name. Pass to the plugin's `components`
|
|
12
|
+
* option to register them globally alongside the core set:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* app.use(createIryxUi({ components: marketingComponents }))
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export { marketingComponents };
|
|
19
|
+
/**
|
|
20
|
+
* Marketing components under the default `I` prefix. Declared only when this
|
|
21
|
+
* subpath is imported, so a project that never uses it keeps the core
|
|
22
|
+
* `GlobalComponents` untouched.
|
|
23
|
+
*/
|
|
24
|
+
export type IryxUiMarketingGlobalComponents = {
|
|
25
|
+
[K in keyof typeof marketingComponents as `I${K}`]: (typeof marketingComponents)[K];
|
|
26
|
+
};
|
|
27
|
+
declare module 'vue' {
|
|
28
|
+
interface GlobalComponents extends IryxUiMarketingGlobalComponents {
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import e from "./marketing/BrowserFrame.js";
|
|
2
|
+
import t from "./marketing/FeatureCard.js";
|
|
3
|
+
import n from "./marketing/Hero.js";
|
|
4
|
+
import r from "./marketing/PricingCard.js";
|
|
5
|
+
import i from "./marketing/PricingTable.js";
|
|
6
|
+
import a from "./marketing/Section.js";
|
|
7
|
+
import o from "./marketing/TestimonialCard.js";
|
|
8
|
+
import { marketing_exports as s } from "./marketing/index.js";
|
|
9
|
+
export { e as BrowserFrame, t as FeatureCard, n as Hero, r as PricingCard, i as PricingTable, a as Section, o as TestimonialCard, s as marketingComponents };
|
package/dist/nuxt.d.ts
CHANGED
|
@@ -5,6 +5,11 @@ export interface ModuleOptions {
|
|
|
5
5
|
prefix: string;
|
|
6
6
|
/** Render bare Reka UI primitives without Iryx's Tailwind classes. */
|
|
7
7
|
unstyled: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Also auto-import the blocks from `iryx-ui/marketing`. Off by default, so an
|
|
10
|
+
* app that has no use for a hero never pulls one into its bundle.
|
|
11
|
+
*/
|
|
12
|
+
blocks: boolean;
|
|
8
13
|
/** Startup appearance. A preference the user already stored wins over this. */
|
|
9
14
|
appearance?: Appearance;
|
|
10
15
|
/** Color theme: a preset name (`'violet'`, `'rose'`) or a custom theme. */
|
package/dist/nuxt.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { componentNames as e } from "./component-names.js";
|
|
2
|
-
import { addComponent as
|
|
1
|
+
import { componentNames as e, marketingComponentNames as t } from "./component-names.js";
|
|
2
|
+
import { addComponent as n, addPluginTemplate as r, defineNuxtModule as i } from "@nuxt/kit";
|
|
3
3
|
//#region src/nuxt.ts
|
|
4
|
-
var
|
|
4
|
+
var a = i({
|
|
5
5
|
meta: {
|
|
6
6
|
name: "iryx-ui",
|
|
7
7
|
configKey: "iryxUi",
|
|
@@ -9,25 +9,31 @@ var i = r({
|
|
|
9
9
|
},
|
|
10
10
|
defaults: {
|
|
11
11
|
prefix: "I",
|
|
12
|
-
unstyled: !1
|
|
12
|
+
unstyled: !1,
|
|
13
|
+
blocks: !1
|
|
13
14
|
},
|
|
14
|
-
setup(
|
|
15
|
-
for (let
|
|
16
|
-
name: `${
|
|
17
|
-
export:
|
|
15
|
+
setup(i) {
|
|
16
|
+
for (let t of e) n({
|
|
17
|
+
name: `${i.prefix}${t}`,
|
|
18
|
+
export: t,
|
|
18
19
|
filePath: "iryx-ui"
|
|
19
20
|
});
|
|
20
|
-
n({
|
|
21
|
+
if (i.blocks) for (let e of t) n({
|
|
22
|
+
name: `${i.prefix}${e}`,
|
|
23
|
+
export: e,
|
|
24
|
+
filePath: "iryx-ui/marketing"
|
|
25
|
+
});
|
|
26
|
+
r({
|
|
21
27
|
filename: "iryx-ui.config.mjs",
|
|
22
28
|
getContents: () => `
|
|
23
29
|
import { applyTheme, initAppearance, iryxUiConfigKey } from 'iryx-ui'
|
|
24
30
|
import { defineNuxtPlugin } from '#app'
|
|
25
31
|
|
|
26
32
|
export default defineNuxtPlugin((nuxtApp) => {
|
|
27
|
-
nuxtApp.vueApp.provide(iryxUiConfigKey, ${JSON.stringify({ unstyled:
|
|
33
|
+
nuxtApp.vueApp.provide(iryxUiConfigKey, ${JSON.stringify({ unstyled: i.unstyled })})
|
|
28
34
|
if (import.meta.client) {
|
|
29
|
-
${
|
|
30
|
-
${
|
|
35
|
+
${i.theme ? `applyTheme(${JSON.stringify(i.theme)})` : ""}
|
|
36
|
+
${i.appearance ? `initAppearance(${JSON.stringify(i.appearance)})` : ""}
|
|
31
37
|
}
|
|
32
38
|
})
|
|
33
39
|
`
|
|
@@ -35,4 +41,4 @@ export default defineNuxtPlugin((nuxtApp) => {
|
|
|
35
41
|
}
|
|
36
42
|
});
|
|
37
43
|
//#endregion
|
|
38
|
-
export {
|
|
44
|
+
export { a as default };
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import type { Plugin } from 'vue';
|
|
1
|
+
import type { Component, Plugin } from 'vue';
|
|
2
2
|
import type { Appearance } from './composables/appearance';
|
|
3
3
|
import type { IryxUiConfig } from './config';
|
|
4
4
|
import type { Theme, ThemePresetName } from './theme/presets';
|
|
5
5
|
export interface IryxUiPluginOptions extends Partial<IryxUiConfig> {
|
|
6
|
+
/**
|
|
7
|
+
* Extra components to register globally, keyed by name. Used by the optional
|
|
8
|
+
* subpaths, e.g. `import { marketingComponents } from 'iryx-ui/marketing'`.
|
|
9
|
+
*/
|
|
10
|
+
components?: Record<string, Component>;
|
|
6
11
|
/** Prefix for globally registered components. Defaults to `I` (IButton, ISwitch…). */
|
|
7
12
|
prefix?: string;
|
|
8
13
|
/** Startup appearance. A preference the user already stored wins over this. */
|
package/dist/plugin.js
CHANGED
|
@@ -5,13 +5,14 @@ import { applyTheme as i } from "./theme/presets.js";
|
|
|
5
5
|
import { components_exports as a } from "./components/index.js";
|
|
6
6
|
//#region src/plugin.ts
|
|
7
7
|
function o(o = {}) {
|
|
8
|
-
let { prefix: s = "I", appearance: c, theme: l,
|
|
8
|
+
let { prefix: s = "I", appearance: c, theme: l, components: u, ...d } = o;
|
|
9
9
|
return { install(o) {
|
|
10
10
|
o.provide(n, {
|
|
11
11
|
...t,
|
|
12
|
-
...
|
|
12
|
+
...d
|
|
13
13
|
});
|
|
14
14
|
for (let t of e) o.component(`${s}${t}`, a[t]);
|
|
15
|
+
for (let [e, t] of Object.entries(u ?? {})) o.component(`${s}${e}`, t);
|
|
15
16
|
l && i(l), c && r(c);
|
|
16
17
|
} };
|
|
17
18
|
}
|
package/dist/theme/accordion.js
CHANGED
|
@@ -5,7 +5,7 @@ var t = e({
|
|
|
5
5
|
root: "w-full",
|
|
6
6
|
item: "border-b border-border last:border-b-0",
|
|
7
7
|
header: "flex",
|
|
8
|
-
trigger: "group/trigger flex flex-1 items-center justify-between gap-4 py-4 text-left text-sm font-medium transition-
|
|
8
|
+
trigger: "group/trigger flex flex-1 items-center justify-between gap-4 py-4 text-left text-sm font-medium transition-[color,background-color,border-color,box-shadow] outline-none hover:text-muted-foreground focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50",
|
|
9
9
|
icon: "size-4 shrink-0 text-muted-foreground transition-[rotate] duration-200 ease-out group-data-[state=open]/trigger:rotate-180",
|
|
10
10
|
content: "overflow-hidden text-sm text-muted-foreground data-[state=closed]:animate-accordion-up data-[state=open]:animate-collapsible-down",
|
|
11
11
|
contentInner: "pb-4"
|
package/dist/theme/alert.js
CHANGED
|
@@ -8,7 +8,7 @@ var t = e({
|
|
|
8
8
|
title: "text-sm font-medium text-foreground",
|
|
9
9
|
description: "text-sm text-muted-foreground",
|
|
10
10
|
actions: "mt-3 flex flex-wrap items-center gap-2",
|
|
11
|
-
close: "-m-1 shrink-0 self-start rounded-lg p-1 text-muted-foreground transition-
|
|
11
|
+
close: "-m-1 shrink-0 self-start rounded-lg p-1 text-muted-foreground transition-[color,background-color,border-color,box-shadow] outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-4"
|
|
12
12
|
},
|
|
13
13
|
variants: {
|
|
14
14
|
variant: {
|
package/dist/theme/app-shell.js
CHANGED
|
@@ -6,7 +6,7 @@ var t = e({
|
|
|
6
6
|
header: "z-30 shrink-0",
|
|
7
7
|
headerRow: "flex w-full items-center",
|
|
8
8
|
headerContent: "min-w-0 flex-1",
|
|
9
|
-
navTrigger: "ms-2 inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-lg text-muted-foreground transition-
|
|
9
|
+
navTrigger: "ms-2 inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-lg text-muted-foreground transition-[color,background-color,border-color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-5",
|
|
10
10
|
body: "flex min-h-0 w-full flex-1",
|
|
11
11
|
sidebar: "shrink-0",
|
|
12
12
|
main: "flex min-w-0 flex-1 flex-col",
|
package/dist/theme/banner.js
CHANGED
|
@@ -8,7 +8,7 @@ var t = e({
|
|
|
8
8
|
content: "min-w-0 flex-1 text-sm",
|
|
9
9
|
title: "font-medium",
|
|
10
10
|
actions: "flex shrink-0 items-center gap-2",
|
|
11
|
-
close: "-mr-1 shrink-0 rounded-lg p-1 opacity-70 transition-opacity outline-none hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current/50 [&_svg]:size-4"
|
|
11
|
+
close: "-mr-1 shrink-0 rounded-lg p-1 opacity-70 transition-opacity transition-shadow outline-none hover:opacity-100 focus-visible:ring-2 focus-visible:ring-current/50 [&_svg]:size-4"
|
|
12
12
|
},
|
|
13
13
|
variants: {
|
|
14
14
|
variant: {
|
package/dist/theme/breadcrumb.js
CHANGED
|
@@ -4,7 +4,7 @@ var t = e({ slots: {
|
|
|
4
4
|
root: "text-sm",
|
|
5
5
|
list: "flex flex-wrap items-center gap-1.5",
|
|
6
6
|
item: "inline-flex items-center gap-1.5",
|
|
7
|
-
link: "inline-flex items-center gap-1.5 rounded text-muted-foreground transition-
|
|
7
|
+
link: "inline-flex items-center gap-1.5 rounded text-muted-foreground transition-[color,background-color,border-color,box-shadow] outline-none hover:text-foreground focus-visible:ring-2 focus-visible:ring-primary/50 [&_svg]:size-4 [&_svg]:shrink-0",
|
|
8
8
|
current: "inline-flex items-center gap-1.5 font-medium text-foreground [&_svg]:size-4 [&_svg]:shrink-0",
|
|
9
9
|
separator: "text-muted-foreground [&_svg]:size-3.5"
|
|
10
10
|
} });
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare const browserFrameTheme: import("tailwind-variants").TVReturnType<{
|
|
2
|
+
shadow: {
|
|
3
|
+
none: {};
|
|
4
|
+
sm: {
|
|
5
|
+
root: string;
|
|
6
|
+
};
|
|
7
|
+
md: {
|
|
8
|
+
root: string;
|
|
9
|
+
};
|
|
10
|
+
lg: {
|
|
11
|
+
root: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}, {
|
|
15
|
+
root: string;
|
|
16
|
+
bar: string;
|
|
17
|
+
dot: string;
|
|
18
|
+
url: string;
|
|
19
|
+
body: string;
|
|
20
|
+
}, undefined, {
|
|
21
|
+
shadow: {
|
|
22
|
+
none: {};
|
|
23
|
+
sm: {
|
|
24
|
+
root: string;
|
|
25
|
+
};
|
|
26
|
+
md: {
|
|
27
|
+
root: string;
|
|
28
|
+
};
|
|
29
|
+
lg: {
|
|
30
|
+
root: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}, {
|
|
34
|
+
root: string;
|
|
35
|
+
bar: string;
|
|
36
|
+
dot: string;
|
|
37
|
+
url: string;
|
|
38
|
+
body: string;
|
|
39
|
+
}, import("tailwind-variants").TVReturnTypeLike<{
|
|
40
|
+
shadow: {
|
|
41
|
+
none: {};
|
|
42
|
+
sm: {
|
|
43
|
+
root: string;
|
|
44
|
+
};
|
|
45
|
+
md: {
|
|
46
|
+
root: string;
|
|
47
|
+
};
|
|
48
|
+
lg: {
|
|
49
|
+
root: string;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
}, {
|
|
53
|
+
root: string;
|
|
54
|
+
bar: string;
|
|
55
|
+
dot: string;
|
|
56
|
+
url: string;
|
|
57
|
+
body: string;
|
|
58
|
+
}>>;
|
|
59
|
+
export type BrowserFrameSlots = keyof ReturnType<typeof browserFrameTheme>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { tv as e } from "tailwind-variants";
|
|
2
|
+
//#region src/theme/browser-frame.ts
|
|
3
|
+
var t = e({
|
|
4
|
+
slots: {
|
|
5
|
+
root: "overflow-hidden text-left",
|
|
6
|
+
bar: "flex items-center gap-2 border-b border-border bg-muted/40 px-4 py-3",
|
|
7
|
+
dot: "size-2.5 rounded-full bg-muted-foreground/25",
|
|
8
|
+
url: "ml-3 truncate rounded-md bg-background px-2.5 py-1 text-xs text-muted-foreground",
|
|
9
|
+
body: ""
|
|
10
|
+
},
|
|
11
|
+
variants: { shadow: {
|
|
12
|
+
none: {},
|
|
13
|
+
sm: { root: "shadow-xs" },
|
|
14
|
+
md: { root: "shadow-md" },
|
|
15
|
+
lg: { root: "shadow-lg" }
|
|
16
|
+
} },
|
|
17
|
+
defaultVariants: { shadow: "lg" }
|
|
18
|
+
});
|
|
19
|
+
//#endregion
|
|
20
|
+
export { t as browserFrameTheme };
|
package/dist/theme/calendar.js
CHANGED
|
@@ -5,12 +5,12 @@ var t = e({
|
|
|
5
5
|
root: "w-fit text-foreground",
|
|
6
6
|
header: "flex items-center justify-between gap-2 pb-3",
|
|
7
7
|
heading: "text-sm font-medium",
|
|
8
|
-
nav: "flex size-7 items-center justify-center rounded-lg text-muted-foreground transition-
|
|
8
|
+
nav: "flex size-7 items-center justify-center rounded-lg text-muted-foreground transition-[color,background-color,border-color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-primary/50 disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4",
|
|
9
9
|
months: "flex items-start gap-4",
|
|
10
10
|
grid: "w-full border-collapse select-none",
|
|
11
11
|
headCell: "pb-1 text-xs font-normal text-muted-foreground",
|
|
12
12
|
cell: "p-0 transition-colors",
|
|
13
|
-
cellTrigger: "flex h-8 w-full min-w-8 items-center justify-center rounded-lg text-sm tabular-nums transition-
|
|
13
|
+
cellTrigger: "flex h-8 w-full min-w-8 items-center justify-center rounded-lg text-sm tabular-nums transition-[color,background-color,border-color,box-shadow] outline-none not-data-[selected]:hover:bg-accent not-data-[selected]:hover:text-accent-foreground focus-visible:ring-2 focus-visible:ring-primary/50 data-[disabled]:pointer-events-none data-[disabled]:opacity-30 data-[outside-view]:text-muted-foreground/50 data-[today]:font-semibold data-[today]:text-primary data-[unavailable]:pointer-events-none data-[unavailable]:line-through data-[unavailable]:opacity-40"
|
|
14
14
|
},
|
|
15
15
|
variants: { range: {
|
|
16
16
|
false: { cellTrigger: "data-[selected]:bg-primary data-[selected]:text-primary-foreground data-[selected]:hover:bg-primary data-[selected]:data-[today]:text-primary-foreground" },
|
package/dist/theme/checkbox.js
CHANGED
|
@@ -3,7 +3,7 @@ import { tv as e } from "tailwind-variants";
|
|
|
3
3
|
var t = e({
|
|
4
4
|
slots: {
|
|
5
5
|
wrapper: "flex items-start gap-2.5",
|
|
6
|
-
root: "peer flex shrink-0 cursor-pointer items-center justify-center rounded border border-border bg-background text-primary-foreground transition-
|
|
6
|
+
root: "peer flex shrink-0 cursor-pointer items-center justify-center rounded border border-border bg-background text-primary-foreground transition-[color,background-color,border-color,box-shadow] outline-none focus-visible:ring-2 focus-visible:ring-primary/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=indeterminate]:border-primary data-[state=indeterminate]:bg-primary",
|
|
7
7
|
indicator: "flex items-center justify-center text-current",
|
|
8
8
|
content: "grid gap-1",
|
|
9
9
|
label: "text-sm leading-5 font-medium text-foreground select-none",
|
|
@@ -3,7 +3,7 @@ import { tv as e } from "tailwind-variants";
|
|
|
3
3
|
var t = e({
|
|
4
4
|
slots: {
|
|
5
5
|
root: "w-full",
|
|
6
|
-
trigger: "flex w-full items-center gap-2 rounded-lg text-sm font-medium text-foreground outline-none focus-visible:ring-2 focus-visible:ring-primary/50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",
|
|
6
|
+
trigger: "flex w-full items-center gap-2 rounded-lg text-sm font-medium text-foreground transition-shadow outline-none focus-visible:ring-2 focus-visible:ring-primary/50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 [&_svg]:size-4 [&_svg]:shrink-0",
|
|
7
7
|
content: "overflow-hidden data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down",
|
|
8
8
|
icon: "shrink-0 text-muted-foreground transition-transform duration-200"
|
|
9
9
|
},
|