iryx-ui 0.18.4 → 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.
Files changed (79) hide show
  1. package/README.md +37 -0
  2. package/dist/component-names.d.ts +8 -0
  3. package/dist/component-names.js +10 -2
  4. package/dist/components/ColorPicker.vue_vue_type_script_setup_true_lang.js +38 -32
  5. package/dist/marketing/BrowserFrame.js +5 -0
  6. package/dist/marketing/BrowserFrame.vue.d.ts +40 -0
  7. package/dist/marketing/BrowserFrame.vue_vue_type_script_setup_true_lang.js +57 -0
  8. package/dist/marketing/FeatureCard.js +5 -0
  9. package/dist/marketing/FeatureCard.vue.d.ts +40 -0
  10. package/dist/marketing/FeatureCard.vue_vue_type_script_setup_true_lang.js +55 -0
  11. package/dist/marketing/Hero.js +5 -0
  12. package/dist/marketing/Hero.vue.d.ts +64 -0
  13. package/dist/marketing/Hero.vue_vue_type_script_setup_true_lang.js +94 -0
  14. package/dist/marketing/PricingCard.js +5 -0
  15. package/dist/marketing/PricingCard.vue.d.ts +70 -0
  16. package/dist/marketing/PricingCard.vue_vue_type_script_setup_true_lang.js +94 -0
  17. package/dist/marketing/PricingTable.js +5 -0
  18. package/dist/marketing/PricingTable.vue.d.ts +41 -0
  19. package/dist/marketing/PricingTable.vue_vue_type_script_setup_true_lang.js +57 -0
  20. package/dist/marketing/Section.js +5 -0
  21. package/dist/marketing/Section.vue.d.ts +53 -0
  22. package/dist/marketing/Section.vue_vue_type_script_setup_true_lang.js +78 -0
  23. package/dist/marketing/TestimonialCard.js +5 -0
  24. package/dist/marketing/TestimonialCard.vue.d.ts +41 -0
  25. package/dist/marketing/TestimonialCard.vue_vue_type_script_setup_true_lang.js +61 -0
  26. package/dist/marketing/index.d.ts +7 -0
  27. package/dist/marketing/index.js +20 -0
  28. package/dist/marketing.d.ts +30 -0
  29. package/dist/marketing.js +9 -0
  30. package/dist/nuxt.d.ts +5 -0
  31. package/dist/nuxt.js +19 -13
  32. package/dist/plugin.d.ts +6 -1
  33. package/dist/plugin.js +3 -2
  34. package/dist/theme/accordion.js +1 -1
  35. package/dist/theme/alert.js +1 -1
  36. package/dist/theme/app-shell.js +1 -1
  37. package/dist/theme/banner.js +1 -1
  38. package/dist/theme/breadcrumb.js +1 -1
  39. package/dist/theme/browser-frame.d.ts +59 -0
  40. package/dist/theme/browser-frame.js +20 -0
  41. package/dist/theme/calendar.js +2 -2
  42. package/dist/theme/checkbox.js +1 -1
  43. package/dist/theme/collapsible.js +1 -1
  44. package/dist/theme/color-picker.js +2 -2
  45. package/dist/theme/combobox.js +2 -2
  46. package/dist/theme/date-picker.js +1 -1
  47. package/dist/theme/dialog.js +1 -1
  48. package/dist/theme/drawer.js +1 -1
  49. package/dist/theme/editable.js +1 -1
  50. package/dist/theme/feature-card.d.ts +41 -0
  51. package/dist/theme/feature-card.js +20 -0
  52. package/dist/theme/file-upload.js +1 -1
  53. package/dist/theme/hero.d.ts +98 -0
  54. package/dist/theme/hero.js +45 -0
  55. package/dist/theme/input.d.ts +2 -2
  56. package/dist/theme/input.js +2 -2
  57. package/dist/theme/menubar.js +1 -1
  58. package/dist/theme/navigation-menu.js +1 -1
  59. package/dist/theme/password-input.js +1 -1
  60. package/dist/theme/pin-input.js +1 -1
  61. package/dist/theme/popover.js +1 -1
  62. package/dist/theme/pricing-card.d.ts +62 -0
  63. package/dist/theme/pricing-card.js +23 -0
  64. package/dist/theme/radio-group.js +1 -1
  65. package/dist/theme/section.d.ts +140 -0
  66. package/dist/theme/section.js +48 -0
  67. package/dist/theme/sidebar.js +1 -1
  68. package/dist/theme/signature-pad.js +1 -1
  69. package/dist/theme/stepper.js +1 -1
  70. package/dist/theme/switch.js +1 -1
  71. package/dist/theme/table.js +2 -2
  72. package/dist/theme/tabs.js +1 -1
  73. package/dist/theme/tags-input.js +2 -2
  74. package/dist/theme/testimonial-card.d.ts +53 -0
  75. package/dist/theme/testimonial-card.js +20 -0
  76. package/dist/theme/toast.js +2 -2
  77. package/dist/theme/tree.js +1 -1
  78. package/package.json +5 -1
  79. package/theme.css +172 -0
package/README.md CHANGED
@@ -71,6 +71,43 @@ Components are auto-imported with the `I` prefix.
71
71
  </template>
72
72
  ```
73
73
 
74
+ ## Blocks
75
+
76
+ Whole page sections — a hero, a banded section, a framed screenshot — on their own
77
+ import path, so an app that never uses them never carries them:
78
+
79
+ ```ts
80
+ import { createIryxUi } from 'iryx-ui'
81
+ import { marketingComponents } from 'iryx-ui/marketing'
82
+
83
+ app.use(createIryxUi({ components: marketingComponents }))
84
+ ```
85
+
86
+ In Nuxt, the module auto-imports them once `blocks` is on:
87
+
88
+ ```ts
89
+ export default defineNuxtConfig({
90
+ modules: ['iryx-ui/nuxt'],
91
+ iryxUi: { blocks: true },
92
+ })
93
+ ```
94
+
95
+ ```vue
96
+ <IHero grid heading="Invoicing that chases the money for you">
97
+ <template #actions>
98
+ <IButton size="lg">Start free</IButton>
99
+ </template>
100
+ </IHero>
101
+
102
+ <ISection tone="muted" bordered heading="Everything the money side needs">
103
+ <!-- … -->
104
+ </ISection>
105
+ ```
106
+
107
+ Seven so far: `IHero`, `ISection`, `IPricingTable`, `IPricingCard`, `IFeatureCard`,
108
+ `ITestimonialCard` and `IBrowserFrame`. Importing the subpath also declares
109
+ them on Vue's `GlobalComponents`; a project that never imports it is untouched.
110
+
74
111
  ## Three ways to take the styling back
75
112
 
76
113
  ```vue
@@ -5,3 +5,11 @@
5
5
  */
6
6
  export declare const componentNames: readonly ["Accordion", "Alert", "App", "AppShell", "AspectRatio", "AuthProviders", "Avatar", "AvatarGroup", "Badge", "BarChart", "Banner", "Breadcrumb", "Button", "ButtonGroup", "Calendar", "Card", "ChartLegend", "Checkbox", "ColorPicker", "Combobox", "Collapsible", "CommandPalette", "Container", "ConfirmDialog", "ContextMenu", "DateField", "DatePicker", "DateRangePicker", "Dialog", "DonutChart", "Drawer", "DropdownMenu", "Editable", "EmptyState", "FileUpload", "Form", "FormField", "HoverCard", "Icon", "Input", "Kbd", "Label", "LineChart", "NavigationMenu", "NumberInput", "Menubar", "PageHeader", "Pagination", "PasswordInput", "PinInput", "Popover", "Progress", "RadioGroup", "ScrollArea", "ScrollFade", "Select", "Separator", "Sidebar", "SignaturePad", "Skeleton", "Slider", "Sparkline", "Splitter", "Stat", "Stepper", "Switch", "Table", "Tabs", "TagsInput", "Textarea", "Toaster", "Toggle", "ToggleGroup", "TimeField", "Timeline", "Toolbar", "Tooltip", "Tree"];
7
7
  export type ComponentName = (typeof componentNames)[number];
8
+ /**
9
+ * Names of every block exported from `iryx-ui/marketing`.
10
+ * A list of strings rather than the modules themselves, because the Nuxt module
11
+ * runs at build time and must not pull `.vue` files into Node.
12
+ * Keep in sync with `src/marketing/index.ts`.
13
+ */
14
+ export declare const marketingComponentNames: readonly ["BrowserFrame", "FeatureCard", "Hero", "PricingCard", "PricingTable", "Section", "TestimonialCard"];
15
+ export type MarketingComponentName = (typeof marketingComponentNames)[number];
@@ -1,4 +1,12 @@
1
1
  //#region src/component-names.ts
2
- var e = /* @__PURE__ */ "Accordion.Alert.App.AppShell.AspectRatio.AuthProviders.Avatar.AvatarGroup.Badge.BarChart.Banner.Breadcrumb.Button.ButtonGroup.Calendar.Card.ChartLegend.Checkbox.ColorPicker.Combobox.Collapsible.CommandPalette.Container.ConfirmDialog.ContextMenu.DateField.DatePicker.DateRangePicker.Dialog.DonutChart.Drawer.DropdownMenu.Editable.EmptyState.FileUpload.Form.FormField.HoverCard.Icon.Input.Kbd.Label.LineChart.NavigationMenu.NumberInput.Menubar.PageHeader.Pagination.PasswordInput.PinInput.Popover.Progress.RadioGroup.ScrollArea.ScrollFade.Select.Separator.Sidebar.SignaturePad.Skeleton.Slider.Sparkline.Splitter.Stat.Stepper.Switch.Table.Tabs.TagsInput.Textarea.Toaster.Toggle.ToggleGroup.TimeField.Timeline.Toolbar.Tooltip.Tree".split(".");
2
+ var e = /* @__PURE__ */ "Accordion.Alert.App.AppShell.AspectRatio.AuthProviders.Avatar.AvatarGroup.Badge.BarChart.Banner.Breadcrumb.Button.ButtonGroup.Calendar.Card.ChartLegend.Checkbox.ColorPicker.Combobox.Collapsible.CommandPalette.Container.ConfirmDialog.ContextMenu.DateField.DatePicker.DateRangePicker.Dialog.DonutChart.Drawer.DropdownMenu.Editable.EmptyState.FileUpload.Form.FormField.HoverCard.Icon.Input.Kbd.Label.LineChart.NavigationMenu.NumberInput.Menubar.PageHeader.Pagination.PasswordInput.PinInput.Popover.Progress.RadioGroup.ScrollArea.ScrollFade.Select.Separator.Sidebar.SignaturePad.Skeleton.Slider.Sparkline.Splitter.Stat.Stepper.Switch.Table.Tabs.TagsInput.Textarea.Toaster.Toggle.ToggleGroup.TimeField.Timeline.Toolbar.Tooltip.Tree".split("."), t = [
3
+ "BrowserFrame",
4
+ "FeatureCard",
5
+ "Hero",
6
+ "PricingCard",
7
+ "PricingTable",
8
+ "Section",
9
+ "TestimonialCard"
10
+ ];
3
11
  //#endregion
4
- export { e as componentNames };
12
+ export { e as componentNames, t as marketingComponentNames };
@@ -40,7 +40,13 @@ var M = /*@__PURE__*/ l({
40
40
  };
41
41
  }
42
42
  }
43
- let L = (e) => k(e, "hex"), R = p(I(N.modelValue)), z = (e) => e.s === 0 || e.b === 0;
43
+ let L = (e) => k(e, "hex"), R = p(I(N.modelValue)), z = (e) => e.s === 0 || e.b === 0, B = r(() => {
44
+ try {
45
+ return j(N.modelValue), N.modelValue;
46
+ } catch {
47
+ return L(R.value);
48
+ }
49
+ });
44
50
  g(() => N.modelValue, (e) => {
45
51
  if (L(R.value) === e) return;
46
52
  let t = I(e);
@@ -49,48 +55,48 @@ var M = /*@__PURE__*/ l({
49
55
  h: R.value.h
50
56
  } : t;
51
57
  });
52
- function B(e) {
58
+ function V(e) {
53
59
  R.value = e, F(L(e));
54
60
  }
55
- function V(e) {
56
- return B({
61
+ function H(e) {
62
+ return V({
57
63
  ...A(e),
58
64
  h: R.value.h,
59
65
  alpha: R.value.alpha
60
66
  });
61
67
  }
62
- function H(e) {
63
- return B({
68
+ function U(e) {
69
+ return V({
64
70
  ...R.value,
65
71
  h: A(e).h
66
72
  });
67
73
  }
68
- function U(e) {
69
- return B({
74
+ function W(e) {
75
+ return V({
70
76
  ...R.value,
71
77
  alpha: A(e).alpha
72
78
  });
73
79
  }
74
- let W = e(), G = r(() => N.unstyled ?? W.unstyled), K = r(() => t());
75
- function q(e, t) {
80
+ let G = e(), K = r(() => N.unstyled ?? G.unstyled), q = r(() => t());
81
+ function J(e, t) {
76
82
  let n = [N.ui?.[e], t].filter(Boolean).join(" ");
77
- return G.value ? n : K.value[e]({ class: n });
83
+ return K.value ? n : q.value[e]({ class: n });
78
84
  }
79
- return (e, t) => (f(), o("div", { class: u(q("root", N.class)) }, [
85
+ return (e, t) => (f(), o("div", { class: u(J("root", N.class)) }, [
80
86
  c(h(y), {
81
87
  "color-space": "hsb",
82
88
  "x-channel": "saturation",
83
89
  "y-channel": "brightness",
84
90
  "model-value": R.value,
85
91
  disabled: N.disabled,
86
- class: u(q("area")),
87
- "onUpdate:color": V
92
+ class: u(J("area")),
93
+ "onUpdate:color": H
88
94
  }, {
89
95
  default: _(({ style: e }) => [c(h(v), {
90
96
  class: "size-full rounded-[inherit]",
91
97
  style: d(e)
92
98
  }, {
93
- default: _(() => [c(h(b), { class: u(q("thumb")) }, null, 8, ["class"])]),
99
+ default: _(() => [c(h(b), { class: u(J("thumb")) }, null, 8, ["class"])]),
94
100
  _: 1
95
101
  }, 8, ["style"])]),
96
102
  _: 1
@@ -104,10 +110,10 @@ var M = /*@__PURE__*/ l({
104
110
  channel: "hue",
105
111
  "model-value": R.value,
106
112
  disabled: N.disabled,
107
- class: u(q("slider")),
108
- "onUpdate:color": H
113
+ class: u(J("slider")),
114
+ "onUpdate:color": U
109
115
  }, {
110
- default: _(() => [c(h(T), { class: u(q("track")) }, null, 8, ["class"]), c(h(w), { class: u([q("thumb"), q("sliderThumb")]) }, null, 8, ["class"])]),
116
+ default: _(() => [c(h(T), { class: u(J("track")) }, null, 8, ["class"]), c(h(w), { class: u([J("thumb"), J("sliderThumb")]) }, null, 8, ["class"])]),
111
117
  _: 1
112
118
  }, 8, [
113
119
  "model-value",
@@ -120,13 +126,13 @@ var M = /*@__PURE__*/ l({
120
126
  channel: "alpha",
121
127
  "model-value": R.value,
122
128
  disabled: N.disabled,
123
- class: u(q("slider")),
124
- "onUpdate:color": U
129
+ class: u(J("slider")),
130
+ "onUpdate:color": W
125
131
  }, {
126
132
  default: _(() => [
127
- s("span", { class: u(q("checkerboard")) }, null, 2),
128
- c(h(T), { class: u(q("track")) }, null, 8, ["class"]),
129
- c(h(w), { class: u([q("thumb"), q("sliderThumb")]) }, null, 8, ["class"])
133
+ s("span", { class: u(J("checkerboard")) }, null, 2),
134
+ c(h(T), { class: u(J("track")) }, null, 8, ["class"]),
135
+ c(h(w), { class: u([J("thumb"), J("sliderThumb")]) }, null, 8, ["class"])
130
136
  ]),
131
137
  _: 1
132
138
  }, 8, [
@@ -136,17 +142,17 @@ var M = /*@__PURE__*/ l({
136
142
  ])) : a("", !0),
137
143
  N.hideField ? a("", !0) : (f(), i(h(S), {
138
144
  key: 1,
139
- "model-value": N.modelValue,
145
+ "model-value": B.value,
140
146
  disabled: N.disabled,
141
- class: u(q("field")),
147
+ class: u(J("field")),
142
148
  "onUpdate:modelValue": F
143
149
  }, {
144
- default: _(() => [s("span", { class: u(q("preview")) }, [s("span", { class: u(q("checkerboard", "rounded-none")) }, null, 2), s("span", {
150
+ default: _(() => [s("span", { class: u(J("preview")) }, [s("span", { class: u(J("checkerboard", "rounded-none")) }, null, 2), s("span", {
145
151
  class: "absolute inset-0",
146
- style: d({ background: N.modelValue })
152
+ style: d({ background: B.value })
147
153
  }, null, 4)], 2), c(h(x), {
148
154
  "aria-label": N.fieldLabel,
149
- class: u(q("input"))
155
+ class: u(J("input"))
150
156
  }, null, 8, ["aria-label", "class"])]),
151
157
  _: 1
152
158
  }, 8, [
@@ -156,14 +162,14 @@ var M = /*@__PURE__*/ l({
156
162
  ])),
157
163
  N.swatches?.length ? (f(), i(h(O), {
158
164
  key: 2,
159
- "model-value": N.modelValue,
160
- class: u(q("swatches")),
161
- "onUpdate:modelValue": t[0] ||= (e) => F(String(e))
165
+ "model-value": B.value,
166
+ class: u(J("swatches")),
167
+ "onUpdate:modelValue": t[0] ||= (e) => e && F(String(e))
162
168
  }, {
163
169
  default: _(() => [(f(!0), o(n, null, m(N.swatches, (e) => (f(), i(h(E), {
164
170
  key: e,
165
171
  value: e,
166
- class: u(q("swatch"))
172
+ class: u(J("swatch"))
167
173
  }, {
168
174
  default: _(() => [c(h(D), { class: "size-full rounded-[inherit] bg-[var(--reka-color-swatch-color)]" })]),
169
175
  _: 1
@@ -0,0 +1,5 @@
1
+ import e from "./BrowserFrame.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/marketing/BrowserFrame.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,40 @@
1
+ import type { ClassValue } from '../class-value';
2
+ export interface BrowserFrameProps {
3
+ /** Address shown in the bar. Decorative — nothing is fetched. */
4
+ url?: string;
5
+ /**
6
+ * Hold the body at a fixed ratio, e.g. `16 / 10`. Leave it out when the
7
+ * content sizes itself, and set it when the content is an image that has
8
+ * not loaded yet — a reserved box is what stops the page jumping.
9
+ */
10
+ ratio?: number;
11
+ shadow?: 'none' | '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. `{ bar: 'py-2' }`. */
16
+ ui?: {
17
+ root?: string;
18
+ bar?: string;
19
+ dot?: string;
20
+ url?: string;
21
+ body?: string;
22
+ };
23
+ }
24
+ declare var __VLS_14: {}, __VLS_16: {};
25
+ type __VLS_Slots = {} & {
26
+ default?: (props: typeof __VLS_14) => any;
27
+ } & {
28
+ default?: (props: typeof __VLS_16) => any;
29
+ };
30
+ declare const __VLS_base: import("vue").DefineComponent<BrowserFrameProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BrowserFrameProps> & Readonly<{}>, {
31
+ unstyled: boolean;
32
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
34
+ declare const _default: typeof __VLS_export;
35
+ export default _default;
36
+ type __VLS_WithSlots<T, S> = T & {
37
+ new (): {
38
+ $slots: S;
39
+ };
40
+ };
@@ -0,0 +1,57 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import t from "../components/AspectRatio.js";
3
+ import n from "../components/Card.js";
4
+ import { browserFrameTheme as r } from "../theme/browser-frame.js";
5
+ import { Fragment as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, defineComponent as u, normalizeClass as d, openBlock as f, renderList as p, renderSlot as m, toDisplayString as h, withCtx as g } from "vue";
6
+ //#region src/marketing/BrowserFrame.vue?vue&type=script&setup=true&lang.ts
7
+ var _ = /*@__PURE__*/ u({
8
+ __name: "BrowserFrame",
9
+ props: {
10
+ url: {},
11
+ ratio: {},
12
+ shadow: {},
13
+ unstyled: {
14
+ type: Boolean,
15
+ default: void 0
16
+ },
17
+ class: { type: [
18
+ String,
19
+ Boolean,
20
+ null,
21
+ Array
22
+ ] },
23
+ ui: {}
24
+ },
25
+ setup(u) {
26
+ let _ = u, v = e(), y = a(() => _.unstyled ?? v.unstyled), b = a(() => r({ shadow: _.shadow }));
27
+ function x(e, t) {
28
+ return y.value ? [_.ui?.[e], t] : b.value[e]({ class: [_.ui?.[e], t] });
29
+ }
30
+ return (e, r) => (f(), o(n, {
31
+ padding: "none",
32
+ unstyled: _.unstyled,
33
+ class: d(x("root", _.class))
34
+ }, {
35
+ default: g(() => [l("div", { class: d(x("bar")) }, [(f(), c(i, null, p(3, (e) => l("span", {
36
+ key: e,
37
+ class: d(x("dot"))
38
+ }, null, 2)), 64)), _.url ? (f(), c("span", {
39
+ key: 0,
40
+ class: d(x("url"))
41
+ }, h(_.url), 3)) : s("", !0)], 2), _.ratio ? (f(), o(t, {
42
+ key: 0,
43
+ ratio: _.ratio,
44
+ class: d(["rounded-t-none", [_.ui?.body]])
45
+ }, {
46
+ default: g(() => [m(e.$slots, "default")]),
47
+ _: 3
48
+ }, 8, ["ratio", "class"])) : (f(), c("div", {
49
+ key: 1,
50
+ class: d(x("body"))
51
+ }, [m(e.$slots, "default")], 2))]),
52
+ _: 3
53
+ }, 8, ["unstyled", "class"]));
54
+ }
55
+ });
56
+ //#endregion
57
+ export { _ as default };
@@ -0,0 +1,5 @@
1
+ import e from "./FeatureCard.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/marketing/FeatureCard.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,40 @@
1
+ import type { ClassValue } from '../class-value';
2
+ import type { IconLike } from '../composables/icon';
3
+ export interface FeatureCardProps {
4
+ /** A Hugeicons export, or any component that renders an SVG. */
5
+ icon?: IconLike;
6
+ title?: string;
7
+ description?: string;
8
+ align?: 'start' | 'center';
9
+ /** Skip built-in classes; you take over styling entirely. */
10
+ unstyled?: boolean;
11
+ class?: ClassValue;
12
+ /** Override classes per slot, e.g. `{ icon: 'bg-success/10' }`. */
13
+ ui?: {
14
+ root?: string;
15
+ icon?: string;
16
+ title?: string;
17
+ description?: string;
18
+ };
19
+ }
20
+ declare var __VLS_8: {}, __VLS_15: {}, __VLS_17: {}, __VLS_19: {};
21
+ type __VLS_Slots = {} & {
22
+ icon?: (props: typeof __VLS_8) => any;
23
+ } & {
24
+ title?: (props: typeof __VLS_15) => any;
25
+ } & {
26
+ description?: (props: typeof __VLS_17) => any;
27
+ } & {
28
+ default?: (props: typeof __VLS_19) => any;
29
+ };
30
+ declare const __VLS_base: import("vue").DefineComponent<FeatureCardProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FeatureCardProps> & Readonly<{}>, {
31
+ unstyled: boolean;
32
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
33
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
34
+ declare const _default: typeof __VLS_export;
35
+ export default _default;
36
+ type __VLS_WithSlots<T, S> = T & {
37
+ new (): {
38
+ $slots: S;
39
+ };
40
+ };
@@ -0,0 +1,55 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import t from "../components/Icon.js";
3
+ import n from "../components/Card.js";
4
+ import { featureCardTheme as r } from "../theme/feature-card.js";
5
+ import { computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createTextVNode as c, createVNode as l, defineComponent as u, normalizeClass as d, openBlock as f, renderSlot as p, toDisplayString as m, unref as h, useSlots as g, withCtx as _ } from "vue";
6
+ //#region src/marketing/FeatureCard.vue?vue&type=script&setup=true&lang.ts
7
+ var v = /*@__PURE__*/ u({
8
+ __name: "FeatureCard",
9
+ props: {
10
+ icon: {},
11
+ title: {},
12
+ description: {},
13
+ align: {},
14
+ unstyled: {
15
+ type: Boolean,
16
+ default: void 0
17
+ },
18
+ class: { type: [
19
+ String,
20
+ Boolean,
21
+ null,
22
+ Array
23
+ ] },
24
+ ui: {}
25
+ },
26
+ setup(u) {
27
+ let v = u, y = g(), b = e(), x = i(() => v.unstyled ?? b.unstyled), S = i(() => r({ align: v.align }));
28
+ function C(e, t) {
29
+ return x.value ? [v.ui?.[e], t] : S.value[e]({ class: [v.ui?.[e], t] });
30
+ }
31
+ return (e, r) => (f(), a(n, {
32
+ unstyled: v.unstyled,
33
+ class: d(C("root", v.class))
34
+ }, {
35
+ default: _(() => [
36
+ v.icon || h(y).icon ? (f(), s("div", {
37
+ key: 0,
38
+ class: d(C("icon"))
39
+ }, [p(e.$slots, "icon", {}, () => [l(t, { icon: v.icon }, null, 8, ["icon"])])], 2)) : o("", !0),
40
+ v.title || h(y).title ? (f(), s("h3", {
41
+ key: 1,
42
+ class: d(C("title"))
43
+ }, [p(e.$slots, "title", {}, () => [c(m(v.title), 1)])], 2)) : o("", !0),
44
+ v.description || h(y).description ? (f(), s("p", {
45
+ key: 2,
46
+ class: d(C("description"))
47
+ }, [p(e.$slots, "description", {}, () => [c(m(v.description), 1)])], 2)) : o("", !0),
48
+ p(e.$slots, "default")
49
+ ]),
50
+ _: 3
51
+ }, 8, ["unstyled", "class"]));
52
+ }
53
+ });
54
+ //#endregion
55
+ export { v as default };
@@ -0,0 +1,5 @@
1
+ import e from "./Hero.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/marketing/Hero.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,64 @@
1
+ import type { ClassValue } from '../class-value';
2
+ export interface HeroProps {
3
+ /** Render as a different element or component. */
4
+ as?: string;
5
+ heading?: string;
6
+ description?: string;
7
+ /** Line under the calls to action, e.g. pricing small print. */
8
+ note?: string;
9
+ /**
10
+ * The moving wash behind the content. `aurora` turns, `bloom` drifts; both
11
+ * stop under `prefers-reduced-motion`.
12
+ */
13
+ backdrop?: 'none' | 'aurora' | 'bloom';
14
+ /** Faint ruled grid over the backdrop. */
15
+ grid?: boolean;
16
+ align?: 'start' | 'center';
17
+ /** Vertical rhythm. `none` leaves it to you. */
18
+ padding?: 'none' | 'sm' | 'md' | 'lg';
19
+ /** Maximum content width, passed to the container. */
20
+ size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
21
+ /** Skip built-in classes; you take over styling entirely. */
22
+ unstyled?: boolean;
23
+ class?: ClassValue;
24
+ /** Override classes per slot, e.g. `{ heading: 'text-7xl' }`. */
25
+ ui?: {
26
+ root?: string;
27
+ container?: string;
28
+ badge?: string;
29
+ heading?: string;
30
+ description?: string;
31
+ actions?: string;
32
+ note?: string;
33
+ media?: string;
34
+ };
35
+ }
36
+ declare var __VLS_14: {}, __VLS_16: {}, __VLS_18: {}, __VLS_20: {}, __VLS_22: {}, __VLS_24: {}, __VLS_26: {};
37
+ type __VLS_Slots = {} & {
38
+ badge?: (props: typeof __VLS_14) => any;
39
+ } & {
40
+ heading?: (props: typeof __VLS_16) => any;
41
+ } & {
42
+ description?: (props: typeof __VLS_18) => any;
43
+ } & {
44
+ actions?: (props: typeof __VLS_20) => any;
45
+ } & {
46
+ note?: (props: typeof __VLS_22) => any;
47
+ } & {
48
+ media?: (props: typeof __VLS_24) => any;
49
+ } & {
50
+ default?: (props: typeof __VLS_26) => any;
51
+ };
52
+ declare const __VLS_base: import("vue").DefineComponent<HeroProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HeroProps> & Readonly<{}>, {
53
+ unstyled: boolean;
54
+ as: string;
55
+ backdrop: "none" | "aurora" | "bloom";
56
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
57
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
58
+ declare const _default: typeof __VLS_export;
59
+ export default _default;
60
+ type __VLS_WithSlots<T, S> = T & {
61
+ new (): {
62
+ $slots: S;
63
+ };
64
+ };
@@ -0,0 +1,94 @@
1
+ import { useIryxUiConfig as e } from "../config.js";
2
+ import t from "../components/Container.js";
3
+ import { heroTheme as n } from "../theme/hero.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/Hero.vue?vue&type=script&setup=true&lang.ts
7
+ var v = {
8
+ key: 1,
9
+ class: "iryx-hero-grid",
10
+ "aria-hidden": "true"
11
+ }, y = /*@__PURE__*/ l({
12
+ __name: "Hero",
13
+ props: {
14
+ as: { default: "section" },
15
+ heading: {},
16
+ description: {},
17
+ note: {},
18
+ backdrop: { default: "aurora" },
19
+ grid: { type: Boolean },
20
+ align: {},
21
+ padding: {},
22
+ size: {},
23
+ unstyled: {
24
+ type: Boolean,
25
+ default: void 0
26
+ },
27
+ class: { type: [
28
+ String,
29
+ Boolean,
30
+ null,
31
+ Array
32
+ ] },
33
+ ui: {}
34
+ },
35
+ setup(l) {
36
+ let y = l, b = h(), x = e(), S = r(() => y.unstyled ?? x.unstyled), C = r(() => n({
37
+ align: y.align,
38
+ padding: y.padding
39
+ }));
40
+ function w(e, t) {
41
+ return S.value ? [y.ui?.[e], t] : C.value[e]({ class: [y.ui?.[e], t] });
42
+ }
43
+ let T = r(() => w("root", y.class));
44
+ return (e, n) => (d(), i(m(_), {
45
+ as: y.as,
46
+ class: u(T.value)
47
+ }, {
48
+ default: g(() => [
49
+ y.backdrop !== "none" && !S.value ? (d(), o("div", {
50
+ key: 0,
51
+ class: u(`iryx-hero-${y.backdrop}`),
52
+ "aria-hidden": "true"
53
+ }, null, 2)) : a("", !0),
54
+ y.grid && !S.value ? (d(), o("div", v)) : a("", !0),
55
+ c(t, {
56
+ size: y.size,
57
+ class: u(w("container"))
58
+ }, {
59
+ default: g(() => [
60
+ m(b).badge ? (d(), o("div", {
61
+ key: 0,
62
+ class: u(w("badge"))
63
+ }, [f(e.$slots, "badge")], 2)) : a("", !0),
64
+ y.heading || m(b).heading ? (d(), o("h1", {
65
+ key: 1,
66
+ class: u(w("heading"))
67
+ }, [f(e.$slots, "heading", {}, () => [s(p(y.heading), 1)])], 2)) : a("", !0),
68
+ y.description || m(b).description ? (d(), o("p", {
69
+ key: 2,
70
+ class: u(w("description"))
71
+ }, [f(e.$slots, "description", {}, () => [s(p(y.description), 1)])], 2)) : a("", !0),
72
+ m(b).actions ? (d(), o("div", {
73
+ key: 3,
74
+ class: u(w("actions"))
75
+ }, [f(e.$slots, "actions")], 2)) : a("", !0),
76
+ y.note || m(b).note ? (d(), o("p", {
77
+ key: 4,
78
+ class: u(w("note"))
79
+ }, [f(e.$slots, "note", {}, () => [s(p(y.note), 1)])], 2)) : a("", !0),
80
+ m(b).media ? (d(), o("div", {
81
+ key: 5,
82
+ class: u(w("media"))
83
+ }, [f(e.$slots, "media")], 2)) : a("", !0),
84
+ f(e.$slots, "default")
85
+ ]),
86
+ _: 3
87
+ }, 8, ["size", "class"])
88
+ ]),
89
+ _: 3
90
+ }, 8, ["as", "class"]));
91
+ }
92
+ });
93
+ //#endregion
94
+ export { y as default };
@@ -0,0 +1,5 @@
1
+ import e from "./PricingCard.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/marketing/PricingCard.vue
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };