@omniharmonic/openspace-cli 0.1.13 → 0.1.15

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 (30) hide show
  1. package/dist/{agents-md-QBMFXTIQ.js → agents-md-OWDSHBGF.js} +2 -2
  2. package/dist/bin.js +3 -3
  3. package/dist/{chunk-IXN2CNGL.js → chunk-GMKHKHUR.js} +206 -39
  4. package/dist/chunk-GMKHKHUR.js.map +1 -0
  5. package/dist/{chunk-B5C7S4S5.js → chunk-PBN36VUE.js} +2775 -184
  6. package/dist/chunk-PBN36VUE.js.map +1 -0
  7. package/dist/{chunk-EFSGZWAO.js → chunk-YAPLQ4OA.js} +155 -16
  8. package/dist/chunk-YAPLQ4OA.js.map +1 -0
  9. package/dist/{crawl-TAADG5BR.js → crawl-WQQDFI7W.js} +2 -2
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/starter/site/AGENTS.md +4 -4
  13. package/dist/templates/darkroom/content/pages/about.json +2 -2
  14. package/dist/templates/encore/content/pages/home.json +1 -1
  15. package/dist/templates/folio/content/pages/home.json +2 -2
  16. package/dist/templates/gather/content/pages/home.json +2 -2
  17. package/dist/templates/harbor/content/pages/home.json +1 -1
  18. package/dist/templates/hearth/content/pages/home.json +6 -6
  19. package/dist/templates/inkwell/content/pages/about.json +2 -2
  20. package/dist/templates/inkwell/content/pages/books.json +1 -1
  21. package/dist/templates/keystone/content/pages/about.json +2 -2
  22. package/dist/templates/kiln/content/pages/home.json +7 -5
  23. package/dist/templates/ledger/content/pages/about.json +4 -4
  24. package/dist/templates/vow/content/pages/home.json +1 -1
  25. package/package.json +8 -8
  26. package/dist/chunk-B5C7S4S5.js.map +0 -1
  27. package/dist/chunk-EFSGZWAO.js.map +0 -1
  28. package/dist/chunk-IXN2CNGL.js.map +0 -1
  29. /package/dist/{agents-md-QBMFXTIQ.js.map → agents-md-OWDSHBGF.js.map} +0 -0
  30. /package/dist/{crawl-TAADG5BR.js.map → crawl-WQQDFI7W.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import { createRequire as __osCreateRequire } from "node:module"; const require = __osCreateRequire(import.meta.url);
2
2
  import {
3
3
  generateAgentsMd
4
- } from "./chunk-IXN2CNGL.js";
4
+ } from "./chunk-GMKHKHUR.js";
5
5
  import "./chunk-26AZCID5.js";
6
6
  export {
7
7
  generateAgentsMd
8
8
  };
9
- //# sourceMappingURL=agents-md-QBMFXTIQ.js.map
9
+ //# sourceMappingURL=agents-md-OWDSHBGF.js.map
package/dist/bin.js CHANGED
@@ -3,9 +3,9 @@ import { createRequire as __osCreateRequire } from "node:module"; const require
3
3
  import {
4
4
  processIo,
5
5
  run
6
- } from "./chunk-B5C7S4S5.js";
7
- import "./chunk-EFSGZWAO.js";
8
- import "./chunk-IXN2CNGL.js";
6
+ } from "./chunk-PBN36VUE.js";
7
+ import "./chunk-YAPLQ4OA.js";
8
+ import "./chunk-GMKHKHUR.js";
9
9
  import "./chunk-26AZCID5.js";
10
10
 
11
11
  // src/bin.ts
@@ -24377,14 +24377,21 @@ var TypographyChoicesSchema = named(
24377
24377
  );
24378
24378
  var LayoutChoicesSchema = named(
24379
24379
  "LayoutChoices",
24380
- "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.",
24381
24381
  external_exports.strictObject({
24382
24382
  contentWidth: external_exports.int().min(480).max(2400).optional(),
24383
24383
  narrowWidth: external_exports.int().min(360).max(1600).optional(),
24384
24384
  sectionPadding: external_exports.int().min(0).max(320).optional(),
24385
24385
  sectionPaddingMobile: external_exports.int().min(0).max(240).optional(),
24386
24386
  gutter: external_exports.int().min(0).max(160).optional(),
24387
- 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()
24388
24395
  })
24389
24396
  );
24390
24397
  var StyleChoicesSchema = named(
@@ -24670,6 +24677,24 @@ function blockFieldsJsonSchema(def) {
24670
24677
  return { title: def.label, description: def.ai.purpose, ...json2 };
24671
24678
  }
24672
24679
 
24680
+ // ../schema/src/phone.ts
24681
+ var PHONE_PADDING = {
24682
+ "3xl": "xl",
24683
+ "2xl": "lg",
24684
+ xl: "lg"
24685
+ };
24686
+ function phonePadding(padding) {
24687
+ if (padding.m !== void 0) return padding.m;
24688
+ const up = resolve(padding, "t");
24689
+ return PHONE_PADDING[up] ?? up;
24690
+ }
24691
+ function phoneColumns(columns2) {
24692
+ return columns2.m ?? [12];
24693
+ }
24694
+ function withPhoneDefault(value, phone) {
24695
+ return value.m === void 0 ? { ...value, m: phone } : value;
24696
+ }
24697
+
24673
24698
  // ../theme/src/color.ts
24674
24699
  var GAMUT_EPSILON = 1e-6;
24675
24700
  var ACHROMATIC_CHROMA = 1e-4;
@@ -27395,15 +27420,16 @@ function responsiveVars(name, value, map2) {
27395
27420
  }
27396
27421
  var spaceVar = (token) => `var(${TOKEN_VARS.space[token] ?? TOKEN_VARS.space.md})`;
27397
27422
  function sectionStyleVars(style) {
27423
+ const pad = style.padding;
27398
27424
  return {
27399
- ...responsiveVars("pad", style.padding, spaceVar),
27425
+ ...responsiveVars("pad", pad && withPhoneDefault(pad, phonePadding(pad)), spaceVar),
27400
27426
  ...responsiveVars("minh", style.minHeight, (v2) => v2)
27401
27427
  };
27402
27428
  }
27403
27429
  var fr = (cols) => cols.map((c3) => `minmax(0, ${c3}fr)`).join(" ");
27404
27430
  function stackVars(layout) {
27405
27431
  return {
27406
- ...responsiveVars("cols", layout.columns, fr),
27432
+ ...responsiveVars("cols", withPhoneDefault(layout.columns, phoneColumns(layout.columns)), fr),
27407
27433
  ...layout.gap ? { "--gap": spaceVar(layout.gap) } : {}
27408
27434
  };
27409
27435
  }
@@ -28682,12 +28708,18 @@ function PageView(props) {
28682
28708
  const heroTheme = visible[0]?.style.colorTheme ?? "light";
28683
28709
  const cart = doc.site.integrations?.stripeConnected ?? false;
28684
28710
  const logoVars = header.logoHeight ? responsiveVars("logo-h", header.logoHeight, (px) => `${px}px`) : void 0;
28711
+ const pageBg = doc.styles.choices.layout?.pageBackground;
28712
+ const pageVars = pageBg && doc.styles.choices.layout?.surface === "card" ? { ...logoVars ?? {}, "--page-bg": pageBg } : logoVars;
28685
28713
  const content = /* @__PURE__ */ jsx10(RenderContext.Provider, { value: { doc, page, mode, basePath, hubUrl }, children: /* @__PURE__ */ jsx10(ImageResolverContext.Provider, { value: imageMap, children: /* @__PURE__ */ jsxs7(
28686
28714
  "div",
28687
28715
  {
28688
- className: cx("os-page", header.overlay && !header.hidden && "has-overlay-header"),
28716
+ className: cx(
28717
+ "os-page",
28718
+ header.overlay && !header.hidden && "has-overlay-header",
28719
+ doc.styles.choices.layout?.surface === "card" && "has-surface-card"
28720
+ ),
28689
28721
  "data-os-page": page.id,
28690
- style: logoVars,
28722
+ style: pageVars,
28691
28723
  children: [
28692
28724
  /* @__PURE__ */ jsx10("a", { className: "os-skip-link", href: "#main", children: "Skip to content" }),
28693
28725
  /* @__PURE__ */ jsx10(AnnouncementBar, { announcement: doc.site.announcement }),
@@ -28951,6 +28983,8 @@ ${button("tertiary")}
28951
28983
  .os-header__brand--split,.os-nav,.os-header__tagline{display:none}
28952
28984
  .os-header__actions{display:none;align-items:center;gap:${v(T.space.xs)}}
28953
28985
  .os-header__actions .os-button{min-height:2.5rem;padding-block:0.5rem}
28986
+ /* A short label stays on one line beside narrow columns (it wraps on phones if it must). */
28987
+ @media (min-width:768px){.os-button{white-space:nowrap;flex-shrink:0}}
28954
28988
  .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}
28955
28989
  .os-header__toggle:hover,.os-header__cart:hover,.os-menu__close:hover{background:${v(c2.surface)}}
28956
28990
  html:not(.os-js) .os-header__toggle{display:none}
@@ -29020,7 +29054,7 @@ html:not(.os-js) .os-header__toggle{display:none}
29020
29054
  .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}
29021
29055
  .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)}
29022
29056
  .os-header--sidebar-left .os-header__brand{flex-direction:column;align-items:flex-start;gap:0.75rem;margin:0}
29023
- .os-header--sidebar-left .os-header__logo{height:auto;max-inline-size:min(100%,8rem)}
29057
+ .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}
29024
29058
  .os-header.os-header--sidebar-left .os-header__title{white-space:normal;max-inline-size:none}
29025
29059
  .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"])}}
29026
29060
  .os-header--sidebar-left .os-nav{inline-size:100%;margin-block-start:${v(T.space.sm)}}
@@ -29053,6 +29087,13 @@ html:not(.os-js) .os-header__toggle{display:none}
29053
29087
  @media (min-width:768px){.os-header__logo{height:var(--tlogo-h,2.5rem)}}
29054
29088
  @media (min-width:1200px){.os-header__logo{height:var(--logo-h,2.5rem)}}
29055
29089
 
29090
+ /* A raised content card over the page background (Site Styles \u2192 layout.surface "card"). */
29091
+ .os-page.has-surface-card{background:var(--page-bg,${v(c2.surface)})}
29092
+ @media (min-width:768px){
29093
+ .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)}
29094
+ .has-surface-card>.os-footer{margin:8.3333% 8.3333% 8.3333%;box-shadow:0 0 1px rgb(0 0 0 / 0.15)}
29095
+ }
29096
+
29056
29097
  /* Footer */
29057
29098
  .os-footer{margin-top:auto}
29058
29099
  .os-footer .os-footer__section:not(.has-pad){padding-block:${v(T.space["2xl"])}}
@@ -29183,6 +29224,43 @@ html{scroll-behavior:auto}
29183
29224
  .os-marquee [data-os-clone],.os-marquee__toggle{display:none}
29184
29225
  }
29185
29226
 
29227
+ /* Phones (< 768px): readable, tappable and contained by default, whatever was designed on desktop.
29228
+ Phone-only, so tablet and desktop rendering is unchanged; a site's custom CSS (unlayered) still wins. */
29229
+ @media (max-width:767.98px){
29230
+ @layer os.base {
29231
+ /* Long links and addresses wrap instead of widening the page. */
29232
+ :where(.os-rich) :where(a){overflow-wrap:anywhere}
29233
+ /* Reading sizes for a phone: body text at most 20px and lead text at most 22px (a big desktop
29234
+ intro paragraph stays an intro, not a wall of 34px text); labels, eyebrows and small text never
29235
+ shrink below 13\u201314px. */
29236
+ body{font-size:clamp(1rem,${v(T.type.body["font-size"])},1.25rem)}
29237
+ .os-type-lead{font-size:min(${v(T.type.lead["font-size"])},1.375rem)}
29238
+ .os-type-eyebrow{font-size:max(0.8125rem,${v(T.type.eyebrow["font-size"])})}
29239
+ .os-type-small{font-size:max(0.875rem,${v(T.type.small["font-size"])})}
29240
+ /* Wide tables and code scroll inside their block instead of the page. */
29241
+ .os-rich :where(table){display:block;max-inline-size:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
29242
+ .os-rich :where(pre){max-inline-size:100%;overflow-x:auto}
29243
+ .os-rich :where(iframe,video,embed,object){max-inline-size:100%}
29244
+ }
29245
+ @layer os.components {
29246
+ /* Comfortable tap targets: the brand link, social icons and footer links are at least 44px. */
29247
+ .os-header__brand{min-height:2.75rem}
29248
+ .os-announcement__close{width:2.75rem;height:2.75rem}
29249
+ /* Text links get a 44px-tall tap area; inline padding doesn't move the text around them. */
29250
+ .os-rich a:not(.os-button),.os-announcement__link{padding-block:max(0.875rem,calc((2.75rem - 1em) / 2))}
29251
+ .os-social__link{width:2.75rem;height:2.75rem}
29252
+ :where(summary){min-height:2.75rem;align-content:center}
29253
+ .os-footer :where(li,p)>a:only-child,.os-footer .os-nav__link{display:inline-flex;align-items:center;min-height:2.75rem}
29254
+ .os-footer .os-rich li+li{margin-block-start:0}
29255
+ /* Button labels stay readable (14px or more). */
29256
+ .os-button{font-size:max(0.875rem,${v(T.type.button["font-size"])})}
29257
+ /* 16px or larger, so phones don't zoom into a field when it's tapped. */
29258
+ .os-input,.os-textarea,.os-select{font-size:max(1rem,${v(T.type.body["font-size"])})}
29259
+ /* Very tall images are cropped to fit the screen (around their focal point). */
29260
+ .os-block--image .os-img:not(.is-fill,.is-contain){max-block-size:75svh}
29261
+ }
29262
+ }
29263
+
29186
29264
  @media print{
29187
29265
  .os-header,.os-announcement,.os-popup,.os-skip-link{display:none!important}
29188
29266
  .os-section{padding-block:1.5rem;min-height:0}
@@ -31407,6 +31485,7 @@ var businessCss = `
31407
31485
  .os-contact__item a{color:var(--os-color-link);overflow-wrap:anywhere}
31408
31486
  .os-contact__name{font-weight:var(--os-font-weight-strong);color:var(--os-color-heading)}
31409
31487
  .os-contact__directions{font-size:var(--os-type-small-font-size);font-weight:var(--os-font-weight-strong);margin-top:0.2em}
31488
+ @media (max-width:767.98px){.os-contact__item a,.os-contact__directions{display:inline-flex;align-items:center;min-height:2.75rem}}
31410
31489
  .os-contact--list .os-contact__item{padding-bottom:var(--os-space-sm);border-bottom:1px solid var(--os-color-border)}
31411
31490
  @container block (min-width:48rem){.os-contact--columns .os-contact__items{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:var(--os-space-md)}}
31412
31491
  `;
@@ -32293,7 +32372,11 @@ var summaryBlock = defineBlock({
32293
32372
  return /* @__PURE__ */ jsxs16(
32294
32373
  "div",
32295
32374
  {
32296
- className: cx("os-summary", `os-summary--${variant}`),
32375
+ className: cx(
32376
+ "os-summary",
32377
+ `os-summary--${variant}`,
32378
+ items.every((i) => i.kind === "products") && "os-summary--products"
32379
+ ),
32297
32380
  style: { "--s-cols": balancedColumns(items.length, columns2) },
32298
32381
  children: [
32299
32382
  heading2,
@@ -32531,6 +32614,8 @@ var collectionsCss = `
32531
32614
  @container block (min-width:36rem){.os-summary--grid .os-summary__items{grid-template-columns:repeat(2,minmax(0,1fr))}}
32532
32615
  @container block (min-width:60rem){.os-summary--grid .os-summary__items{grid-template-columns:repeat(var(--s-cols,3),minmax(0,1fr))}}
32533
32616
  .os-summary__item{min-width:0;display:flex}
32617
+ /* Products on phones: two small cards per row (name, price), like a shop app. */
32618
+ @media (max-width:767.98px){@container block (max-width:35.99rem){.os-summary--grid.os-summary--products .os-summary__items{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--os-space-sm) var(--os-space-xs)}.os-summary--products .os-summary__excerpt{display:none}.os-summary--products .os-summary__title{font-size:var(--os-type-body-font-size);line-height:1.3}}}
32534
32619
  .os-summary__card{position:relative;display:grid;align-content:start;gap:var(--os-space-xs);width:100%}
32535
32620
  .os-summary__body{display:grid;gap:var(--os-space-3xs)}
32536
32621
  .os-summary__meta{display:flex;flex-wrap:wrap;gap:0.2em 0.9em;margin:0;font-size:var(--os-type-small-font-size);color:var(--os-color-text-muted)}
@@ -32991,7 +33076,26 @@ var productBlock = defineBlock({
32991
33076
  }),
32992
33077
  quantity: f.boolean({ default: true, label: "Quantity picker" }),
32993
33078
  buttonLabel: f.text({ maxLength: 30, default: "Add to cart" }),
32994
- detailsLabel: f.text({ maxLength: 30, default: "View details" })
33079
+ detailsLabel: f.text({ maxLength: 30, default: "View details" }),
33080
+ showPrice: f.boolean({
33081
+ optional: true,
33082
+ // Unset means on (the page shows it): the default says so to editors.
33083
+ default: true,
33084
+ label: "Show the price",
33085
+ help: "On unless turned off"
33086
+ }),
33087
+ showBuy: f.boolean({
33088
+ optional: true,
33089
+ default: true,
33090
+ label: "Show Add to cart",
33091
+ help: "Off: just the picture and name, linking to the product's page (a shop grid)"
33092
+ }),
33093
+ imageAspect: f.select({
33094
+ options: ASPECT_OPTIONS,
33095
+ optional: true,
33096
+ label: "Image shape",
33097
+ help: "Crop for the product photo (default portrait 4:5)"
33098
+ })
32995
33099
  },
32996
33100
  variants: ["card", "split", "minimal"],
32997
33101
  styleSlots: [
@@ -33054,7 +33158,7 @@ var productBlock = defineBlock({
33054
33158
  Img,
33055
33159
  {
33056
33160
  src: image3,
33057
- aspect: "4:5",
33161
+ aspect: fields.imageAspect ?? "4:5",
33058
33162
  sizes: variant === "split" ? "(min-width: 768px) 50vw, 100vw" : "(min-width: 768px) 40vw, 100vw",
33059
33163
  className: cx("os-product__image", imageClass)
33060
33164
  }
@@ -33070,9 +33174,9 @@ var productBlock = defineBlock({
33070
33174
  children: /* @__PURE__ */ jsx22("a", { className: "os-product__link", href, children: fm.title })
33071
33175
  }
33072
33176
  ) : null,
33073
- price ? /* @__PURE__ */ jsx22("p", { className: "os-product__price", children: /* @__PURE__ */ jsx22(PriceText, { price }) }) : null,
33177
+ price && fields.showPrice !== false ? /* @__PURE__ */ jsx22("p", { className: "os-product__price", children: /* @__PURE__ */ jsx22(PriceText, { price }) }) : null,
33074
33178
  fields.showDescription && fm.excerpt ? /* @__PURE__ */ jsx22("p", { className: "os-product__desc", children: fm.excerpt }) : null,
33075
- firstAvailable && !canSell ? /* @__PURE__ */ jsx22(
33179
+ fields.showBuy === false ? null : firstAvailable && !canSell ? /* @__PURE__ */ jsx22(
33076
33180
  OpeningSoon,
33077
33181
  {
33078
33182
  kind: "store",
@@ -33134,7 +33238,7 @@ var productBlock = defineBlock({
33134
33238
  )
33135
33239
  ] })
33136
33240
  ] }) : 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." }),
33137
- fields.detailsLabel ? /* @__PURE__ */ jsxs18("a", { className: "os-product__details", href, children: [
33241
+ fields.detailsLabel && fields.showBuy !== false ? /* @__PURE__ */ jsxs18("a", { className: "os-product__details", href, children: [
33138
33242
  fields.detailsLabel,
33139
33243
  /* @__PURE__ */ jsxs18("span", { className: "os-visually-hidden", children: [
33140
33244
  ": ",
@@ -34205,6 +34309,15 @@ var galleryBlock = defineBlock({
34205
34309
  display: "segmented",
34206
34310
  help: "Columns on wide screens (grid and masonry)"
34207
34311
  }),
34312
+ fit: f.select({
34313
+ options: [
34314
+ { value: "cover", label: "Fill the frame" },
34315
+ { value: "contain", label: "Show whole photos" }
34316
+ ],
34317
+ optional: true,
34318
+ label: "Fit",
34319
+ help: "Slideshows and carousels: crop each photo to the frame, or show it whole inside it"
34320
+ }),
34208
34321
  lightbox: f.boolean({ default: true, help: "Open photos in a full-screen viewer" }),
34209
34322
  showCaptions: f.boolean({ default: false, label: "Show captions" })
34210
34323
  },
@@ -34241,7 +34354,15 @@ function Gallery({ id, fields, variant }) {
34241
34354
  const lightbox = fields.lightbox && fields.images.some((i) => !i.link);
34242
34355
  const carousel = variant === "carousel" || variant === "slideshow";
34243
34356
  const media2 = (item3, i) => {
34244
- const img = /* @__PURE__ */ jsx28(Img, { src: item3.image, sizes, aspect: crop ?? "original" });
34357
+ const img = /* @__PURE__ */ jsx28(
34358
+ Img,
34359
+ {
34360
+ src: item3.image,
34361
+ sizes,
34362
+ aspect: crop ?? "original",
34363
+ ...fields.fit === "contain" && crop ? { fit: "contain" } : {}
34364
+ }
34365
+ );
34245
34366
  if (item3.link)
34246
34367
  return /* @__PURE__ */ jsx28(Link, { to: item3.link, className: "os-gallery__link", children: img });
34247
34368
  if (fields.lightbox)
@@ -34315,7 +34436,7 @@ var galleryCss = `
34315
34436
  .os-gallery--grid .os-gallery__items{display:grid;gap:var(--os-space-xs);grid-template-columns:repeat(2,minmax(0,1fr))}
34316
34437
  @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)}}
34317
34438
  @container block (min-width:64rem){.os-gallery--grid .os-gallery__items{grid-template-columns:repeat(var(--g-cols,3),minmax(0,1fr))}}
34318
- @container block (max-width:24rem){.os-gallery--grid .os-gallery__items{grid-template-columns:minmax(0,1fr)}}
34439
+ @container block (max-width:20rem){.os-gallery--grid .os-gallery__items{grid-template-columns:minmax(0,1fr)}}
34319
34440
 
34320
34441
  .os-gallery--masonry .os-gallery__items{columns:2;column-gap:var(--os-space-xs)}
34321
34442
  .os-gallery--masonry .os-gallery__item{break-inside:avoid;margin-bottom:var(--os-space-xs)}
@@ -34379,6 +34500,12 @@ var headingBlock = defineBlock({
34379
34500
  help: "Use one Heading 1 per page; it tells search engines what the page is about"
34380
34501
  }),
34381
34502
  size: f.select({ options: SIZES2, default: "auto", label: "Visual size" }),
34503
+ phoneSize: f.select({
34504
+ options: SIZES2,
34505
+ optional: true,
34506
+ label: "Size on phones",
34507
+ help: "Only on phones: a smaller size keeps long words from breaking (Fix for phones sets it)"
34508
+ }),
34382
34509
  subheading: f.text({ optional: true, multiline: true, maxLength: 280 })
34383
34510
  },
34384
34511
  variants: ["plain", "rule", "underline", "split", "eyebrow-rule"],
@@ -34400,7 +34527,17 @@ var headingBlock = defineBlock({
34400
34527
  return /* @__PURE__ */ jsxs23("div", { className: cx("os-heading", `os-heading--${variant}`), children: [
34401
34528
  /* @__PURE__ */ jsxs23("div", { className: "os-heading__main", children: [
34402
34529
  fields.eyebrow ? /* @__PURE__ */ jsx29("p", { className: "os-heading__eyebrow os-type-eyebrow", children: fields.eyebrow }) : null,
34403
- /* @__PURE__ */ jsx29(Tag, { className: cx("os-heading__text", typo(style, "heading", size)), children: fields.text })
34530
+ /* @__PURE__ */ jsx29(
34531
+ Tag,
34532
+ {
34533
+ className: cx(
34534
+ "os-heading__text",
34535
+ typo(style, "heading", size),
34536
+ fields.phoneSize && fields.phoneSize !== "auto" && `os-heading__text--m-${fields.phoneSize}`
34537
+ ),
34538
+ children: fields.text
34539
+ }
34540
+ )
34404
34541
  ] }),
34405
34542
  fields.subheading ? /* @__PURE__ */ jsx29("p", { className: "os-heading__sub os-type-lead", children: fields.subheading }) : null
34406
34543
  ] });
@@ -34529,6 +34666,7 @@ var headingCss = `
34529
34666
  .os-heading--eyebrow-rule .os-heading__eyebrow::after{content:"";display:block;width:clamp(3rem,5vw,4rem);height:2px;background:var(--os-color-accent);margin-block:clamp(1.25rem,2vw,1.75rem) clamp(0.75rem,1.5vw,1.25rem)}
34530
34667
  .os-align-center .os-heading--eyebrow-rule .os-heading__eyebrow::after,.os-malign-center .os-heading--eyebrow-rule .os-heading__eyebrow::after{margin-inline:auto}
34531
34668
  .os-heading__text{margin:0;text-wrap:balance;color:var(--os-color-heading)}
34669
+ @media (max-width:767.98px){.os-heading__text--m-display{font-size:var(--os-type-display-font-size);line-height:var(--os-type-display-line-height);letter-spacing:var(--os-type-display-letter-spacing)}.os-heading__text--m-h1{font-size:var(--os-type-h1-font-size);line-height:var(--os-type-h1-line-height);letter-spacing:var(--os-type-h1-letter-spacing)}.os-heading__text--m-h2{font-size:var(--os-type-h2-font-size);line-height:var(--os-type-h2-line-height);letter-spacing:var(--os-type-h2-letter-spacing)}.os-heading__text--m-h3{font-size:var(--os-type-h3-font-size);line-height:var(--os-type-h3-line-height);letter-spacing:var(--os-type-h3-letter-spacing)}.os-heading__text--m-h4{font-size:var(--os-type-h4-font-size);line-height:var(--os-type-h4-line-height);letter-spacing:var(--os-type-h4-letter-spacing)}}
34532
34670
  .os-heading__sub{margin:0;color:var(--os-color-text);max-inline-size:var(--os-measure);text-wrap:pretty}
34533
34671
  .os-heading--rule .os-heading__main::before{content:"";width:2.5rem;height:3px;border-radius:var(--os-radius-full);background:var(--os-color-accent);margin-bottom:var(--os-space-2xs)}
34534
34672
  .os-heading--underline .os-heading__main{padding-bottom:var(--os-space-xs);border-bottom:1px solid var(--os-color-border)}
@@ -34563,7 +34701,13 @@ var imageBlock = defineBlock({
34563
34701
  aspect: aspectField("4:5"),
34564
34702
  caption: f.text({ optional: true, maxLength: 200, ai: "Optional; one short sentence." }),
34565
34703
  link: f.link({ optional: true, help: "Make the whole image a link" }),
34566
- lightbox: f.boolean({ default: false, help: "Open a larger view when clicked" })
34704
+ lightbox: f.boolean({ default: false, help: "Open a larger view when clicked" }),
34705
+ size: f.select({
34706
+ options: ["fill", "original"],
34707
+ optional: true,
34708
+ label: "Size",
34709
+ help: "Fill the column, or show the picture no wider than its own size (a book cover, a small portrait)"
34710
+ })
34567
34711
  },
34568
34712
  variants: ["default", "caption-overlay", "inset"],
34569
34713
  styleSlots: ["radius", "shadow", "imageTreatment", "align", "padding", "animation"],
@@ -34628,10 +34772,12 @@ function ImageView({ id, fields, variant }) {
34628
34772
  }
34629
34773
  );
34630
34774
  }
34775
+ const natural = !grid2 && fields.size === "original" && fields.image.width ? fields.image.width : 0;
34631
34776
  return /* @__PURE__ */ jsxs24(
34632
34777
  "figure",
34633
34778
  {
34634
- className: cx("os-image", `os-image--${variant}`, grid2 && "is-fill"),
34779
+ className: cx("os-image", `os-image--${variant}`, grid2 && "is-fill", natural && "is-natural"),
34780
+ style: natural ? { "--image-max": `${natural}px` } : void 0,
34635
34781
  "data-os-behavior": !fields.link && fields.lightbox ? "lightbox" : void 0,
34636
34782
  children: [
34637
34783
  media2,
@@ -34643,7 +34789,13 @@ function ImageView({ id, fields, variant }) {
34643
34789
  var imageCss = `
34644
34790
  .os-image{position:relative;display:grid;gap:var(--os-space-2xs)}
34645
34791
  .os-image.is-fill{height:100%;grid-template-rows:minmax(0,1fr);grid-auto-rows:auto}
34646
- .os-image.is-fill>.os-image__link{display:block;height:100%}
34792
+ .os-image.is-fill>.os-image.is-natural{max-inline-size:min(100%,var(--image-max))}
34793
+ .os-align-center .os-image.is-natural,.os-align-center>.os-image.is-natural{margin-inline:auto}
34794
+ .os-align-end .os-image.is-natural{margin-inline-start:auto}
34795
+ .os-image__link{display:block;height:100%}
34796
+ .os-image.is-natural{max-inline-size:min(100%,var(--image-max))}
34797
+ .os-align-center .os-image.is-natural,.os-align-center>.os-image.is-natural{margin-inline:auto}
34798
+ .os-align-end .os-image.is-natural{margin-inline-start:auto}
34647
34799
  .os-image__link{display:block;color:inherit;border-radius:var(--os-image-radius)}
34648
34800
  .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)}
34649
34801
  .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}
@@ -35070,6 +35222,7 @@ var mapCss = `
35070
35222
  .os-map__pin .os-icon{fill:var(--os-color-background)}
35071
35223
  .os-map__attribution{position:absolute;inset-inline-end:0;bottom:0;z-index:2;padding:0.15rem 0.45rem;font-size:0.6875rem;line-height:1.4;background:color-mix(in oklab,var(--os-color-neutral-50) 85%,transparent);color:var(--os-color-neutral-800);border-start-start-radius:var(--os-radius-sm)}
35072
35224
  .os-map__attribution a{color:inherit}
35225
+ @media (max-width:767.98px){.os-map__attribution{font-size:0.75rem;padding:0.3rem 0.6rem}.os-map__attribution a{display:inline-block;padding-block:0.15rem}}
35073
35226
  .os-map__info{display:grid;gap:var(--os-space-2xs);align-content:start}
35074
35227
  .os-map__address{display:grid;font-style:normal;color:var(--os-color-text)}
35075
35228
  .os-map__name{font-family:var(--os-font-heading);font-weight:var(--os-font-weight-heading);font-size:var(--os-type-h4-font-size);line-height:var(--os-type-h4-line-height);color:var(--os-color-heading);margin-bottom:0.15em}
@@ -35492,6 +35645,7 @@ var newsletterCss = `
35492
35645
  .os-newsletter__note{font-size:var(--os-type-small-font-size);color:var(--os-color-text-muted)}
35493
35646
  .os-newsletter--stacked .os-newsletter__row,.os-newsletter--card .os-newsletter__row{display:grid}
35494
35647
  .os-newsletter--stacked .os-newsletter__submit,.os-newsletter--card .os-newsletter__submit{justify-self:start}
35648
+ @media (max-width:767.98px){.os-newsletter__row{display:grid}.os-newsletter__field{flex:none}.os-newsletter .os-newsletter__submit{justify-self:stretch;width:100%}}
35495
35649
  .os-newsletter--card{padding:var(--os-space-md);background:var(--os-color-surface);border-radius:var(--os-radius-card)}
35496
35650
  .os-block.has-radius .os-newsletter--card{border-radius:var(--radius)}
35497
35651
  .os-block.os-themed .os-newsletter--card{background:transparent;padding:0}
@@ -36252,6 +36406,7 @@ var restaurantMenuCss = `
36252
36406
  .os-menu-card__name{font-weight:var(--os-font-weight-strong);color:var(--os-color-heading)}
36253
36407
  .os-menu-card__diet{display:inline-flex;gap:0.25em}
36254
36408
  .os-menu-card__diet abbr{font-size:0.7em;font-weight:var(--os-font-weight-strong);letter-spacing:0.04em;text-decoration:none;color:var(--os-color-link);border:1px solid currentColor;border-radius:var(--os-radius-full);padding:0.05em 0.45em;cursor:help}
36409
+ @media (max-width:767.98px){.os-menu-card__diet abbr{font-size:max(0.7em,0.75rem)}}
36255
36410
  .os-menu-card__leader{flex:1;min-width:1rem;border-bottom:1.5px dotted var(--os-color-text-muted);translate:0 -0.3em}
36256
36411
  .os-menu-card__price{font-variant-numeric:lining-nums tabular-nums;color:var(--os-color-heading);white-space:nowrap}
36257
36412
  .os-menu-card__desc{margin:0;color:var(--os-color-text);max-inline-size:var(--os-measure);font-size:var(--os-type-small-font-size);line-height:var(--os-type-small-line-height)}
@@ -37433,6 +37588,8 @@ html:not(.os-js) .os-video__fallback{display:grid}
37433
37588
  var BLOCKS_CSS = `/* OpenSpace block library (@omniharmonic/openspace-blocks). Tokens: --os-* from @omniharmonic/openspace-theme. */
37434
37589
  @layer os.reset, os.base, os.layout, os.components, os.behaviors, os.blocks, os.utilities;
37435
37590
  @layer os.blocks {
37591
+ /* Phones: small standalone links inside blocks get a 44px-tall tap area. */
37592
+ @media (max-width:767.98px){:where(.os-audio__link,.os-booking__fallback,.os-product__details,.os-events__register,.os-product__link){display:inline-flex;align-items:center;min-height:2.75rem}}
37436
37593
  ${[
37437
37594
  textCss,
37438
37595
  imageCss,
@@ -40690,7 +40847,12 @@ function stack(o = {}) {
40690
40847
  return {
40691
40848
  mode: "stack",
40692
40849
  columns: columns2,
40693
- ...o.order ? { order: { m: o.order, t: o.order } } : {},
40850
+ ...o.order || o.mOrder ? {
40851
+ order: {
40852
+ m: o.mOrder ?? o.order,
40853
+ ...o.order ? { t: o.order } : {}
40854
+ }
40855
+ } : {},
40694
40856
  ...o.align ? { align: o.align } : {},
40695
40857
  ...o.width ? { width: o.width } : {},
40696
40858
  ...o.gap ? { gap: o.gap } : {}
@@ -46571,7 +46733,7 @@ var heroPresets = [
46571
46733
  make: (c3) => ({
46572
46734
  layout: stack({ width: "narrow" }),
46573
46735
  padding: { d: "3xl", m: "2xl" },
46574
- minHeight: { d: "88vh", m: "80svh" },
46736
+ minHeight: { d: "88vh", m: "70svh" },
46575
46737
  background: {
46576
46738
  type: "image",
46577
46739
  src: photo2("cliffs", 1920).src,
@@ -46611,7 +46773,7 @@ var heroPresets = [
46611
46773
  make: (c3) => ({
46612
46774
  layout: stack({ cols: [7, 5], align: "end" }),
46613
46775
  padding: { d: "2xl", m: "xl" },
46614
- minHeight: { d: "92vh", m: "85svh" },
46776
+ minHeight: { d: "92vh", m: "72svh" },
46615
46777
  background: {
46616
46778
  type: "image",
46617
46779
  src: photo2("modernHouse", 1920).src,
@@ -46703,10 +46865,11 @@ var heroPresets = [
46703
46865
  return {
46704
46866
  padding: { d: "xl", m: "lg" },
46705
46867
  ...grid([
46706
- [big, r(1, 1, 11, 22), r(1, 1, 6, 14)],
46707
- [small3, r(8, 12, 7, 13, { z: 2 }), r(5, 10, 4, 8, { z: 2 })],
46708
- [words2, r(15, 4, 10, 14), r(1, 19, 8, 10)],
46709
- [cta, r(15, 18, 10, 4), r(1, 29, 8, 3)]
46868
+ // Phones: the words and button first, the collage after them.
46869
+ [big, r(1, 1, 11, 22), r(1, 15, 6, 14)],
46870
+ [small3, r(8, 12, 7, 13, { z: 2 }), r(5, 24, 4, 8, { z: 2 })],
46871
+ [words2, r(15, 4, 10, 14), r(1, 1, 8, 10)],
46872
+ [cta, r(15, 18, 10, 4), r(1, 11, 8, 3)]
46710
46873
  ])
46711
46874
  };
46712
46875
  }
@@ -46821,11 +46984,12 @@ var heroPresets = [
46821
46984
  return {
46822
46985
  padding: { d: "xl", m: "lg" },
46823
46986
  ...grid([
46824
- [a, r(1, 1, 8, 24), r(1, 1, 5, 12)],
46825
- [b, r(10, 4, 6, 16), r(6, 5, 3, 9)],
46826
- [d, r(17, 1, 8, 13), r(1, 14, 8, 9)],
46827
- [words2, r(14, 11, 11, 11, { z: 2 }), r(1, 21, 8, 11, { z: 2 })],
46828
- [cta, r(15, 23, 10, 3), r(1, 33, 8, 3)]
46987
+ // Phones: the words and button first, the photos after them.
46988
+ [a, r(1, 1, 8, 24), r(1, 16, 5, 12)],
46989
+ [b, r(10, 4, 6, 16), r(6, 20, 3, 9)],
46990
+ [d, r(17, 1, 8, 13), r(1, 29, 8, 9)],
46991
+ [words2, r(14, 11, 11, 11, { z: 2 }), r(1, 1, 8, 11, { z: 2 })],
46992
+ [cta, r(15, 23, 10, 3), r(1, 12, 8, 3)]
46829
46993
  ])
46830
46994
  };
46831
46995
  }
@@ -47209,7 +47373,7 @@ var heroMorePresets = [
47209
47373
  avoid: `${AI_AVOID2} Third-person bios on a personal site; job-title soup.`
47210
47374
  },
47211
47375
  make: (c3) => ({
47212
- layout: stack({ cols: [4, 8], align: "center", gap: "2xl", order: [0, 1] }),
47376
+ layout: stack({ cols: [4, 8], align: "center", gap: "2xl", order: [0, 1], mOrder: [1, 0] }),
47213
47377
  padding: { d: "xl", m: "lg" },
47214
47378
  blocks: [
47215
47379
  image2(photo2("portraitLena", 420, "1:1"), {
@@ -47300,12 +47464,12 @@ var heroMorePresets = [
47300
47464
  make: (c3) => ({
47301
47465
  layout: stack({ width: "content", gap: "lg" }),
47302
47466
  padding: { d: "3xl", m: "2xl" },
47303
- minHeight: { d: "90vh", m: "85svh" },
47467
+ minHeight: { d: "90vh", m: "72svh" },
47304
47468
  background: {
47305
47469
  type: "image",
47306
47470
  src: photo2("festivalSunset", 1920).src,
47307
47471
  focal: [0.5, 0.45],
47308
- overlay: scrim(0.78)
47472
+ overlay: scrim(0.86)
47309
47473
  },
47310
47474
  blocks: [
47311
47475
  heading("Riverbend Folk Weekend", {
@@ -48671,9 +48835,10 @@ var teamPresets = [
48671
48835
  const cta = button2("Read our story", c3.primary, { role: "tertiary" });
48672
48836
  return {
48673
48837
  ...grid([
48674
- [pic, r(13, 1, 10, 24), r(2, 1, 7, 16)],
48675
- [panel2, r(3, 5, 12, 14, { z: 2 }), r(1, 13, 8, 14, { z: 2 })],
48676
- [cta, r(4, 20, 9, 3), r(1, 28, 8, 3)]
48838
+ // Phones: the words and button first, the portrait after them.
48839
+ [pic, r(13, 1, 10, 24), r(2, 19, 7, 16)],
48840
+ [panel2, r(3, 5, 12, 14, { z: 2 }), r(1, 1, 8, 14, { z: 2 })],
48841
+ [cta, r(4, 20, 9, 3), r(1, 15, 8, 3)]
48677
48842
  ])
48678
48843
  };
48679
48844
  }
@@ -52315,7 +52480,7 @@ var testimonialsMorePresets = [
52315
52480
  type: "image",
52316
52481
  src: photo2("lake", 1920).src,
52317
52482
  focal: [0.5, 0.5],
52318
- overlay: scrim(0.8)
52483
+ overlay: scrim(0.86)
52319
52484
  },
52320
52485
  blocks: [
52321
52486
  pullQuote(
@@ -53101,6 +53266,8 @@ export {
53101
53266
  fallbackMobileRects,
53102
53267
  toJsonSchema,
53103
53268
  blockFieldsJsonSchema,
53269
+ phonePadding,
53270
+ phoneColumns,
53104
53271
  oklchToHex,
53105
53272
  parseColor,
53106
53273
  isColor,
@@ -53244,4 +53411,4 @@ lucide/dist/esm/lucide.mjs:
53244
53411
  * See the LICENSE file in the root directory of this source tree.
53245
53412
  *)
53246
53413
  */
53247
- //# sourceMappingURL=chunk-IXN2CNGL.js.map
53414
+ //# sourceMappingURL=chunk-GMKHKHUR.js.map