@omniharmonic/openspace-cli 0.1.12 → 0.1.14

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.
@@ -24107,6 +24107,127 @@ var SiteConfigSchema = named(
24107
24107
  })
24108
24108
  );
24109
24109
 
24110
+ // ../schema/src/design-system.ts
24111
+ var DESIGN_SYSTEM_FILE = "content/design-system.json";
24112
+ var Text = (max) => external_exports.string().max(max);
24113
+ var DesignColorSchema = external_exports.strictObject({
24114
+ /** `#rrggbb` (or any CSS colour the theme can read). */
24115
+ value: Text(80),
24116
+ role: external_exports.enum([...COLOR_ROLES, "brand", "secondary"]).optional(),
24117
+ /** Where it is used ("labels and rules only"). */
24118
+ usage: Text(200).optional()
24119
+ });
24120
+ var DesignFontSchema = external_exports.strictObject({
24121
+ family: Text(80),
24122
+ /** The full CSS stack as given (`'Lora', Georgia, serif`). */
24123
+ stack: Text(200).optional(),
24124
+ category: external_exports.enum(["serif", "sans-serif", "monospace", "display", "handwriting"]).optional(),
24125
+ weights: external_exports.array(external_exports.int().min(100).max(900)).max(9).optional(),
24126
+ /** Served by Google Fonts (so the site can self-host it). */
24127
+ google: external_exports.boolean().optional()
24128
+ });
24129
+ var DesignTypeStepSchema = external_exports.strictObject({
24130
+ size: external_exports.number().min(6).max(240).optional(),
24131
+ sizeMobile: external_exports.number().min(6).max(200).optional(),
24132
+ lineHeight: external_exports.number().min(0.6).max(4).optional(),
24133
+ letterSpacing: external_exports.number().min(-0.5).max(2).optional(),
24134
+ weight: external_exports.int().min(100).max(900).optional(),
24135
+ case: external_exports.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
24136
+ font: external_exports.enum(["heading", "body", "label", "mono"]).optional()
24137
+ });
24138
+ var DesignTokensSchema = external_exports.strictObject({
24139
+ colors: external_exports.record(Text(60), DesignColorSchema).optional(),
24140
+ fonts: external_exports.strictObject({
24141
+ heading: DesignFontSchema.optional(),
24142
+ body: DesignFontSchema.optional(),
24143
+ label: DesignFontSchema.optional(),
24144
+ mono: DesignFontSchema.optional()
24145
+ }).optional(),
24146
+ /** Type scale by role (`display`, `h1`…`h4`, `lead`, `body`, `small`, `eyebrow`, `button`, `nav`). */
24147
+ type: external_exports.record(Text(40), DesignTypeStepSchema).optional(),
24148
+ /** Page rhythm and spacing steps in px. */
24149
+ space: external_exports.strictObject({
24150
+ contentWidth: external_exports.number().min(0).max(4e3).optional(),
24151
+ narrowWidth: external_exports.number().min(0).max(4e3).optional(),
24152
+ sectionPadding: external_exports.number().min(0).max(400).optional(),
24153
+ sectionPaddingMobile: external_exports.number().min(0).max(400).optional(),
24154
+ gutter: external_exports.number().min(0).max(400).optional(),
24155
+ gutterMobile: external_exports.number().min(0).max(400).optional(),
24156
+ scale: external_exports.record(Text(40), external_exports.number().min(0).max(2e3)).optional()
24157
+ }).optional(),
24158
+ /** Corner radii in px (`base`, `button`, `card`, `image`; 9999 = pill). */
24159
+ radius: external_exports.record(Text(40), external_exports.number().min(0).max(1e4)).optional(),
24160
+ shadow: external_exports.record(Text(40), Text(200)).optional()
24161
+ });
24162
+ var DESIGN_SOURCE_KINDS = [
24163
+ "tokens",
24164
+ "brand-kit",
24165
+ "html",
24166
+ "brand-doc",
24167
+ "logo",
24168
+ "photos",
24169
+ "manual",
24170
+ "template",
24171
+ "claude"
24172
+ ];
24173
+ var DesignSystemSchema = named(
24174
+ "DesignSystem",
24175
+ "content/design-system.json: the brief, brand material, distilled design tokens and how they map onto Site Styles (read by Claude's design skills).",
24176
+ external_exports.strictObject({
24177
+ $schema: external_exports.string().optional(),
24178
+ version: external_exports.literal(1),
24179
+ /** The person's own words about the site (Start with Claude). */
24180
+ brief: external_exports.strictObject({
24181
+ about: Text(2e3).optional(),
24182
+ audience: Text(1e3).optional(),
24183
+ /** How it should feel ("warm", "calm", "bold"…). */
24184
+ feeling: external_exports.array(Text(40)).max(12).optional(),
24185
+ /** Anything else they said (must-haves, places they love). */
24186
+ notes: Text(2e3).optional()
24187
+ }).optional(),
24188
+ brand: external_exports.strictObject({
24189
+ name: Text(120).optional(),
24190
+ /** How the brand speaks (from a brand document, or Claude's notes). */
24191
+ voice: Text(2e3).optional(),
24192
+ /** Text of a brand document the owner brought (trimmed). */
24193
+ guidelines: Text(2e4).optional(),
24194
+ logo: MediaPathSchema.optional(),
24195
+ /** Brand photos the owner brought (media paths). */
24196
+ photos: external_exports.array(MediaPathSchema).max(24).optional(),
24197
+ /** Files kept in the repository for reference (PDF brand books…), not published. */
24198
+ documents: external_exports.array(external_exports.strictObject({ name: Text(120), path: Text(300) })).max(12).optional()
24199
+ }).optional(),
24200
+ tokens: DesignTokensSchema,
24201
+ /** Design principles to keep ("Rust is for labels and rules only; never body text"). */
24202
+ rules: external_exports.array(Text(300)).max(40).optional(),
24203
+ /** How the tokens became Site Styles: plain sentences, contrast changes included. */
24204
+ mapping: external_exports.strictObject({
24205
+ notes: external_exports.array(Text(400)).max(40),
24206
+ contrast: external_exports.array(
24207
+ external_exports.strictObject({
24208
+ theme: Text(40),
24209
+ role: Text(40),
24210
+ from: Text(40),
24211
+ to: Text(40),
24212
+ against: Text(40)
24213
+ })
24214
+ ).max(80).optional()
24215
+ }).optional(),
24216
+ /** Bespoke components and what each is for (kept in step with content/components). */
24217
+ components: external_exports.record(Text(40), external_exports.strictObject({ purpose: Text(300), source: Text(200).optional() })).optional(),
24218
+ sources: external_exports.array(
24219
+ external_exports.strictObject({
24220
+ kind: external_exports.enum(DESIGN_SOURCE_KINDS),
24221
+ name: Text(200).optional(),
24222
+ /** Token format (`dtcg`, `style-dictionary`, `tokens-studio`, `canva`, `plain`). */
24223
+ format: Text(40).optional(),
24224
+ at: Text(40).optional()
24225
+ })
24226
+ ).max(40).optional(),
24227
+ updatedAt: Text(40).optional()
24228
+ })
24229
+ );
24230
+
24110
24231
  // ../schema/src/media.ts
24111
24232
  var MEDIA_KINDS = ["image", "video", "audio", "file"];
24112
24233
  var MAX_PLACEHOLDER_LENGTH = 1024;
@@ -24256,14 +24377,21 @@ var TypographyChoicesSchema = named(
24256
24377
  );
24257
24378
  var LayoutChoicesSchema = named(
24258
24379
  "LayoutChoices",
24259
- "Page rhythm: content width and narrow width (px), section padding (px at desktop and on phones), side gutter.",
24380
+ "Page rhythm: content width and narrow width (px), section padding (px at desktop and on phones), side gutter, and an optional raised content card over a page background.",
24260
24381
  external_exports.strictObject({
24261
24382
  contentWidth: external_exports.int().min(480).max(2400).optional(),
24262
24383
  narrowWidth: external_exports.int().min(360).max(1600).optional(),
24263
24384
  sectionPadding: external_exports.int().min(0).max(320).optional(),
24264
24385
  sectionPaddingMobile: external_exports.int().min(0).max(240).optional(),
24265
24386
  gutter: external_exports.int().min(0).max(160).optional(),
24266
- gutterMobile: external_exports.int().min(0).max(80).optional()
24387
+ gutterMobile: external_exports.int().min(0).max(80).optional(),
24388
+ /**
24389
+ * `card`: the page's sections sit on a raised panel over the page background (a blog
24390
+ * theme's content card); absent or `none`: sections run edge to edge.
24391
+ */
24392
+ surface: external_exports.enum(["none", "card"]).optional(),
24393
+ /** The page background around a `card` surface (absent: the light theme's muted surface). */
24394
+ pageBackground: CssColorSchema.optional()
24267
24395
  })
24268
24396
  );
24269
24397
  var StyleChoicesSchema = named(
@@ -24374,7 +24502,12 @@ var SiteDocumentSchema = named(
24374
24502
  * Custom components by name (`content/components/<name>.json`, ADR custom-components).
24375
24503
  * Optional: documents without components are unchanged.
24376
24504
  */
24377
- components: ComponentsSchema.optional()
24505
+ components: ComponentsSchema.optional(),
24506
+ /**
24507
+ * The design-system record (`content/design-system.json`): brief, brand material, tokens and
24508
+ * their Site Styles mapping, for Claude's design skills. Optional; never rendered.
24509
+ */
24510
+ designSystem: DesignSystemSchema.optional()
24378
24511
  }).superRefine((doc, ctx) => {
24379
24512
  const slugs = /* @__PURE__ */ new Map();
24380
24513
  const sectionIds = /* @__PURE__ */ new Map();
@@ -27588,7 +27721,9 @@ function StackBody({ section: section2 }) {
27588
27721
  "os-section__inner os-stack",
27589
27722
  `os-w-${layout.width ?? "content"}`,
27590
27723
  layout.align && `is-align-${layout.align}`,
27591
- cols.length > 1 && "is-multi"
27724
+ cols.length > 1 && "is-multi",
27725
+ // A full-width designer section draws its own edges (no side gutter).
27726
+ layout.width === "full" && section2.blocks.length === 1 && section2.blocks[0]?.type.startsWith("component/") && "is-bleed"
27592
27727
  ),
27593
27728
  style: stackVars(layout),
27594
27729
  children: cols.map((blocks2, i) => {
@@ -28554,12 +28689,18 @@ function PageView(props) {
28554
28689
  const heroTheme = visible[0]?.style.colorTheme ?? "light";
28555
28690
  const cart = doc.site.integrations?.stripeConnected ?? false;
28556
28691
  const logoVars = header.logoHeight ? responsiveVars("logo-h", header.logoHeight, (px) => `${px}px`) : void 0;
28692
+ const pageBg = doc.styles.choices.layout?.pageBackground;
28693
+ const pageVars = pageBg && doc.styles.choices.layout?.surface === "card" ? { ...logoVars ?? {}, "--page-bg": pageBg } : logoVars;
28557
28694
  const content = /* @__PURE__ */ jsx10(RenderContext.Provider, { value: { doc, page, mode, basePath, hubUrl }, children: /* @__PURE__ */ jsx10(ImageResolverContext.Provider, { value: imageMap, children: /* @__PURE__ */ jsxs7(
28558
28695
  "div",
28559
28696
  {
28560
- className: cx("os-page", header.overlay && !header.hidden && "has-overlay-header"),
28697
+ className: cx(
28698
+ "os-page",
28699
+ header.overlay && !header.hidden && "has-overlay-header",
28700
+ doc.styles.choices.layout?.surface === "card" && "has-surface-card"
28701
+ ),
28561
28702
  "data-os-page": page.id,
28562
- style: logoVars,
28703
+ style: pageVars,
28563
28704
  children: [
28564
28705
  /* @__PURE__ */ jsx10("a", { className: "os-skip-link", href: "#main", children: "Skip to content" }),
28565
28706
  /* @__PURE__ */ jsx10(AnnouncementBar, { announcement: doc.site.announcement }),
@@ -28670,6 +28811,7 @@ ${typeClasses}
28670
28811
  /* Stack mode: 1\u20134 columns, per-breakpoint ratios (--cols/--tcols/--mcols) and order (--to/--mo) */
28671
28812
  .os-stack{display:grid;max-inline-size:calc(var(--content-max) + 2 * ${v(T.section.gutter)});padding-inline:${v(T.section.gutter)};grid-template-columns:var(--mcols,minmax(0,1fr));row-gap:var(--gap,${v(T.section.blockGap)});column-gap:var(--gap,${v(T.space.xl)});align-items:start}
28672
28813
  .os-w-full.os-stack{max-inline-size:none}
28814
+ .os-stack.is-bleed{padding-inline:0}
28673
28815
  .os-stack.is-align-center{align-items:center}
28674
28816
  .os-stack.is-align-end{align-items:end}
28675
28817
  .os-stack.is-align-stretch{align-items:stretch}
@@ -28822,6 +28964,8 @@ ${button("tertiary")}
28822
28964
  .os-header__brand--split,.os-nav,.os-header__tagline{display:none}
28823
28965
  .os-header__actions{display:none;align-items:center;gap:${v(T.space.xs)}}
28824
28966
  .os-header__actions .os-button{min-height:2.5rem;padding-block:0.5rem}
28967
+ /* A short label stays on one line beside narrow columns (it wraps on phones if it must). */
28968
+ @media (min-width:768px){.os-button{white-space:nowrap;flex-shrink:0}}
28825
28969
  .os-header__toggle,.os-header__cart,.os-menu__close{position:relative;display:inline-grid;place-items:center;width:2.75rem;height:2.75rem;padding:0;border:0;border-radius:${v(T.radius.full)};background:transparent;color:inherit}
28826
28970
  .os-header__toggle:hover,.os-header__cart:hover,.os-menu__close:hover{background:${v(c2.surface)}}
28827
28971
  html:not(.os-js) .os-header__toggle{display:none}
@@ -28891,7 +29035,7 @@ html:not(.os-js) .os-header__toggle{display:none}
28891
29035
  .os-header.os-header--sidebar-left{position:fixed;inset-block:0;inset-inline-start:0;inline-size:var(--sidebar-w);overflow-y:auto;overscroll-behavior:contain}
28892
29036
  .os-header--sidebar-left .os-header__bar{flex-direction:column;align-items:flex-start;gap:${v(T.space.sm)};min-height:0;max-inline-size:none;margin:0;padding:clamp(2rem,4vw,4rem) clamp(1.5rem,3.5vw,3.5rem)}
28893
29037
  .os-header--sidebar-left .os-header__brand{flex-direction:column;align-items:flex-start;gap:0.75rem;margin:0}
28894
- .os-header--sidebar-left .os-header__logo{height:auto;max-inline-size:min(100%,8rem)}
29038
+ .os-header--sidebar-left .os-header__logo{height:var(--logo-h,auto);max-block-size:var(--logo-h,8rem);max-inline-size:100%;width:auto}
28895
29039
  .os-header.os-header--sidebar-left .os-header__title{white-space:normal;max-inline-size:none}
28896
29040
  .os-header--sidebar-left .os-header__tagline{display:block;margin:0;font-size:${v(T.type.small["font-size"])};line-height:${v(T.type.small["line-height"])};color:${v(c2["text-muted"])}}
28897
29041
  .os-header--sidebar-left .os-nav{inline-size:100%;margin-block-start:${v(T.space.sm)}}
@@ -28924,6 +29068,13 @@ html:not(.os-js) .os-header__toggle{display:none}
28924
29068
  @media (min-width:768px){.os-header__logo{height:var(--tlogo-h,2.5rem)}}
28925
29069
  @media (min-width:1200px){.os-header__logo{height:var(--logo-h,2.5rem)}}
28926
29070
 
29071
+ /* A raised content card over the page background (Site Styles \u2192 layout.surface "card"). */
29072
+ .os-page.has-surface-card{background:var(--page-bg,${v(c2.surface)})}
29073
+ @media (min-width:768px){
29074
+ .has-surface-card>.os-main{flex:none;margin:8.3333% 8.3333% 0;padding-block:8.3333% 0;background:${v(c2.background)};box-shadow:0 0 1px rgb(0 0 0 / 0.15)}
29075
+ .has-surface-card>.os-footer{margin:8.3333% 8.3333% 8.3333%;box-shadow:0 0 1px rgb(0 0 0 / 0.15)}
29076
+ }
29077
+
28927
29078
  /* Footer */
28928
29079
  .os-footer{margin-top:auto}
28929
29080
  .os-footer .os-footer__section:not(.has-pad){padding-block:${v(T.space["2xl"])}}
@@ -32862,7 +33013,19 @@ var productBlock = defineBlock({
32862
33013
  }),
32863
33014
  quantity: f.boolean({ default: true, label: "Quantity picker" }),
32864
33015
  buttonLabel: f.text({ maxLength: 30, default: "Add to cart" }),
32865
- detailsLabel: f.text({ maxLength: 30, default: "View details" })
33016
+ detailsLabel: f.text({ maxLength: 30, default: "View details" }),
33017
+ showPrice: f.boolean({ optional: true, label: "Show the price", help: "On unless turned off" }),
33018
+ showBuy: f.boolean({
33019
+ optional: true,
33020
+ label: "Show Add to cart",
33021
+ help: "Off: just the picture and name, linking to the product's page (a shop grid)"
33022
+ }),
33023
+ imageAspect: f.select({
33024
+ options: ASPECT_OPTIONS,
33025
+ optional: true,
33026
+ label: "Image shape",
33027
+ help: "Crop for the product photo (default portrait 4:5)"
33028
+ })
32866
33029
  },
32867
33030
  variants: ["card", "split", "minimal"],
32868
33031
  styleSlots: [
@@ -32925,7 +33088,7 @@ var productBlock = defineBlock({
32925
33088
  Img,
32926
33089
  {
32927
33090
  src: image3,
32928
- aspect: "4:5",
33091
+ aspect: fields.imageAspect ?? "4:5",
32929
33092
  sizes: variant === "split" ? "(min-width: 768px) 50vw, 100vw" : "(min-width: 768px) 40vw, 100vw",
32930
33093
  className: cx("os-product__image", imageClass)
32931
33094
  }
@@ -32941,9 +33104,9 @@ var productBlock = defineBlock({
32941
33104
  children: /* @__PURE__ */ jsx22("a", { className: "os-product__link", href, children: fm.title })
32942
33105
  }
32943
33106
  ) : null,
32944
- price ? /* @__PURE__ */ jsx22("p", { className: "os-product__price", children: /* @__PURE__ */ jsx22(PriceText, { price }) }) : null,
33107
+ price && fields.showPrice !== false ? /* @__PURE__ */ jsx22("p", { className: "os-product__price", children: /* @__PURE__ */ jsx22(PriceText, { price }) }) : null,
32945
33108
  fields.showDescription && fm.excerpt ? /* @__PURE__ */ jsx22("p", { className: "os-product__desc", children: fm.excerpt }) : null,
32946
- firstAvailable && !canSell ? /* @__PURE__ */ jsx22(
33109
+ fields.showBuy === false ? null : firstAvailable && !canSell ? /* @__PURE__ */ jsx22(
32947
33110
  OpeningSoon,
32948
33111
  {
32949
33112
  kind: "store",
@@ -33005,7 +33168,7 @@ var productBlock = defineBlock({
33005
33168
  )
33006
33169
  ] })
33007
33170
  ] }) : options.length ? /* @__PURE__ */ jsx22("p", { className: "os-product__soldout", children: "Sold out" }) : /* @__PURE__ */ jsx22(EditorNotice, { children: "Give this product a SKU so it can be added to the cart." }),
33008
- fields.detailsLabel ? /* @__PURE__ */ jsxs18("a", { className: "os-product__details", href, children: [
33171
+ fields.detailsLabel && fields.showBuy !== false ? /* @__PURE__ */ jsxs18("a", { className: "os-product__details", href, children: [
33009
33172
  fields.detailsLabel,
33010
33173
  /* @__PURE__ */ jsxs18("span", { className: "os-visually-hidden", children: [
33011
33174
  ": ",
@@ -34076,6 +34239,15 @@ var galleryBlock = defineBlock({
34076
34239
  display: "segmented",
34077
34240
  help: "Columns on wide screens (grid and masonry)"
34078
34241
  }),
34242
+ fit: f.select({
34243
+ options: [
34244
+ { value: "cover", label: "Fill the frame" },
34245
+ { value: "contain", label: "Show whole photos" }
34246
+ ],
34247
+ optional: true,
34248
+ label: "Fit",
34249
+ help: "Slideshows and carousels: crop each photo to the frame, or show it whole inside it"
34250
+ }),
34079
34251
  lightbox: f.boolean({ default: true, help: "Open photos in a full-screen viewer" }),
34080
34252
  showCaptions: f.boolean({ default: false, label: "Show captions" })
34081
34253
  },
@@ -34112,7 +34284,15 @@ function Gallery({ id, fields, variant }) {
34112
34284
  const lightbox = fields.lightbox && fields.images.some((i) => !i.link);
34113
34285
  const carousel = variant === "carousel" || variant === "slideshow";
34114
34286
  const media2 = (item3, i) => {
34115
- const img = /* @__PURE__ */ jsx28(Img, { src: item3.image, sizes, aspect: crop ?? "original" });
34287
+ const img = /* @__PURE__ */ jsx28(
34288
+ Img,
34289
+ {
34290
+ src: item3.image,
34291
+ sizes,
34292
+ aspect: crop ?? "original",
34293
+ ...fields.fit === "contain" && crop ? { fit: "contain" } : {}
34294
+ }
34295
+ );
34116
34296
  if (item3.link)
34117
34297
  return /* @__PURE__ */ jsx28(Link, { to: item3.link, className: "os-gallery__link", children: img });
34118
34298
  if (fields.lightbox)
@@ -34186,7 +34366,7 @@ var galleryCss = `
34186
34366
  .os-gallery--grid .os-gallery__items{display:grid;gap:var(--os-space-xs);grid-template-columns:repeat(2,minmax(0,1fr))}
34187
34367
  @container block (min-width:44rem){.os-gallery--grid .os-gallery__items{grid-template-columns:repeat(var(--g-tcols,3),minmax(0,1fr));gap:var(--os-space-sm)}}
34188
34368
  @container block (min-width:64rem){.os-gallery--grid .os-gallery__items{grid-template-columns:repeat(var(--g-cols,3),minmax(0,1fr))}}
34189
- @container block (max-width:24rem){.os-gallery--grid .os-gallery__items{grid-template-columns:minmax(0,1fr)}}
34369
+ @container block (max-width:20rem){.os-gallery--grid .os-gallery__items{grid-template-columns:minmax(0,1fr)}}
34190
34370
 
34191
34371
  .os-gallery--masonry .os-gallery__items{columns:2;column-gap:var(--os-space-xs)}
34192
34372
  .os-gallery--masonry .os-gallery__item{break-inside:avoid;margin-bottom:var(--os-space-xs)}
@@ -34434,7 +34614,13 @@ var imageBlock = defineBlock({
34434
34614
  aspect: aspectField("4:5"),
34435
34615
  caption: f.text({ optional: true, maxLength: 200, ai: "Optional; one short sentence." }),
34436
34616
  link: f.link({ optional: true, help: "Make the whole image a link" }),
34437
- lightbox: f.boolean({ default: false, help: "Open a larger view when clicked" })
34617
+ lightbox: f.boolean({ default: false, help: "Open a larger view when clicked" }),
34618
+ size: f.select({
34619
+ options: ["fill", "original"],
34620
+ optional: true,
34621
+ label: "Size",
34622
+ help: "Fill the column, or show the picture no wider than its own size (a book cover, a small portrait)"
34623
+ })
34438
34624
  },
34439
34625
  variants: ["default", "caption-overlay", "inset"],
34440
34626
  styleSlots: ["radius", "shadow", "imageTreatment", "align", "padding", "animation"],
@@ -34499,10 +34685,12 @@ function ImageView({ id, fields, variant }) {
34499
34685
  }
34500
34686
  );
34501
34687
  }
34688
+ const natural = !grid2 && fields.size === "original" && fields.image.width ? fields.image.width : 0;
34502
34689
  return /* @__PURE__ */ jsxs24(
34503
34690
  "figure",
34504
34691
  {
34505
- className: cx("os-image", `os-image--${variant}`, grid2 && "is-fill"),
34692
+ className: cx("os-image", `os-image--${variant}`, grid2 && "is-fill", natural && "is-natural"),
34693
+ style: natural ? { "--image-max": `${natural}px` } : void 0,
34506
34694
  "data-os-behavior": !fields.link && fields.lightbox ? "lightbox" : void 0,
34507
34695
  children: [
34508
34696
  media2,
@@ -34514,7 +34702,13 @@ function ImageView({ id, fields, variant }) {
34514
34702
  var imageCss = `
34515
34703
  .os-image{position:relative;display:grid;gap:var(--os-space-2xs)}
34516
34704
  .os-image.is-fill{height:100%;grid-template-rows:minmax(0,1fr);grid-auto-rows:auto}
34517
- .os-image.is-fill>.os-image__link{display:block;height:100%}
34705
+ .os-image.is-fill>.os-image.is-natural{max-inline-size:min(100%,var(--image-max))}
34706
+ .os-align-center .os-image.is-natural,.os-align-center>.os-image.is-natural{margin-inline:auto}
34707
+ .os-align-end .os-image.is-natural{margin-inline-start:auto}
34708
+ .os-image__link{display:block;height:100%}
34709
+ .os-image.is-natural{max-inline-size:min(100%,var(--image-max))}
34710
+ .os-align-center .os-image.is-natural,.os-align-center>.os-image.is-natural{margin-inline:auto}
34711
+ .os-align-end .os-image.is-natural{margin-inline-start:auto}
34518
34712
  .os-image__link{display:block;color:inherit;border-radius:var(--os-image-radius)}
34519
34713
  .os-image__caption{font-size:var(--os-type-small-font-size);line-height:var(--os-type-small-line-height);color:var(--os-color-text-muted)}
34520
34714
  .os-image--caption-overlay .os-image__caption{position:absolute;inset:auto 0 0 0;z-index:2;padding:var(--os-space-lg) var(--os-space-sm) var(--os-space-xs);color:var(--os-color-neutral-50);background:linear-gradient(to top,color-mix(in oklab,var(--os-color-neutral-950) 62%,transparent),color-mix(in oklab,var(--os-color-neutral-950) 0%,transparent));border-radius:0 0 var(--os-image-radius) var(--os-image-radius);pointer-events:none}
@@ -52955,6 +53149,8 @@ export {
52955
53149
  componentInstances,
52956
53150
  expandComponent,
52957
53151
  SiteConfigSchema,
53152
+ DESIGN_SYSTEM_FILE,
53153
+ DesignSystemSchema,
52958
53154
  MediaMetaSchema,
52959
53155
  DENSITIES,
52960
53156
  SHAPES,
@@ -52970,7 +53166,9 @@ export {
52970
53166
  fallbackMobileRects,
52971
53167
  toJsonSchema,
52972
53168
  blockFieldsJsonSchema,
53169
+ oklchToHex,
52973
53170
  parseColor,
53171
+ isColor,
52974
53172
  toHex,
52975
53173
  deltaEOK,
52976
53174
  relativeLuminance,
@@ -53111,4 +53309,4 @@ lucide/dist/esm/lucide.mjs:
53111
53309
  * See the LICENSE file in the root directory of this source tree.
53112
53310
  *)
53113
53311
  */
53114
- //# sourceMappingURL=chunk-O55O7EA5.js.map
53312
+ //# sourceMappingURL=chunk-SY5NDWS2.js.map