@stacksjs/cms 0.75.64 → 0.75.65

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.
@@ -1 +1 @@
1
- import{schema}from"@stacksjs/validation";import{defineBlock,registerBlocks}from"./registry";const string=(max=1000)=>({validate:async(value)=>typeof value==="string"&&value.length<=max}),url=()=>({validate:async(value)=>{if(typeof value!=="string"||!value)return!1;if(value.startsWith("/"))return!0;try{const result=await schema.string().url().validate(value);return typeof result==="boolean"?result:Boolean(result.valid)}catch{return!1}}}),oneOf=(values)=>(value)=>typeof value==="string"&&values.includes(value)?!0:`must be one of ${values.join(", ")}`;export const defaultBlocks=[defineBlock({type:"hero",label:"Hero",component:"cms/blocks/hero",icon:"i-hugeicons-layout-top",schema:{heading:{rule:string(300),required:!0},subheading:{rule:string(600)},imageUrl:{rule:url()},ctaLabel:{rule:string(80)},ctaHref:{rule:url()},align:{rule:oneOf(["left","center"])}}}),defineBlock({type:"rich-text",label:"Text",component:"cms/blocks/rich-text",icon:"i-hugeicons-text",schema:{html:{rule:string(1e5),required:!0}}}),defineBlock({type:"image",label:"Image",component:"cms/blocks/image",icon:"i-hugeicons-image-01",schema:{src:{rule:url(),required:!0},alt:{rule:string(300),required:!0},caption:{rule:string(500)},width:{rule:oneOf(["content","wide","full"])}}}),defineBlock({type:"columns",label:"Columns",component:"cms/blocks/columns",icon:"i-hugeicons-layout-3-column",schema:{columns:{rule:(value)=>Array.isArray(value)&&value.length>=1&&value.length<=4&&value.every((col)=>col&&typeof col==="object"&&typeof col.html==="string")?!0:"1-4 columns, each with an html string",required:!0}}}),defineBlock({type:"cta",label:"Call to action",component:"cms/blocks/cta",icon:"i-hugeicons-cursor-pointer-02",schema:{heading:{rule:string(300),required:!0},body:{rule:string(1000)},buttonLabel:{rule:string(80),required:!0},buttonHref:{rule:url(),required:!0}}}),defineBlock({type:"embed",label:"Embed",component:"cms/blocks/embed",icon:"i-hugeicons-embed",schema:{src:{rule:url(),required:!0},title:{rule:string(300),required:!0},aspect:{rule:oneOf(["16:9","4:3","1:1"])}}}),defineBlock({type:"form",label:"Form",component:"cms/blocks/form",icon:"i-hugeicons-checklist",schema:{formUuid:{rule:(value)=>typeof value==="string"&&/^[0-9a-f-]{36}$/i.test(value)?!0:"must be a form uuid",required:!0}}})];export function registerDefaultBlocks(){registerBlocks(defaultBlocks)}
1
+ import{schema}from"@stacksjs/validation/runtime";import{defineBlock,registerBlocks}from"./registry";const string=(max=1000)=>({validate:async(value)=>typeof value==="string"&&value.length<=max}),url=()=>({validate:async(value)=>{if(typeof value!=="string"||!value)return!1;if(value.startsWith("/"))return!0;try{const result=await schema.string().url().validate(value);return typeof result==="boolean"?result:Boolean(result.valid)}catch{return!1}}}),oneOf=(values)=>(value)=>typeof value==="string"&&values.includes(value)?!0:`must be one of ${values.join(", ")}`;export const defaultBlocks=[defineBlock({type:"hero",label:"Hero",component:"cms/blocks/hero",icon:"i-hugeicons-layout-top",schema:{heading:{rule:string(300),required:!0},subheading:{rule:string(600)},imageUrl:{rule:url()},ctaLabel:{rule:string(80)},ctaHref:{rule:url()},align:{rule:oneOf(["left","center"])}}}),defineBlock({type:"rich-text",label:"Text",component:"cms/blocks/rich-text",icon:"i-hugeicons-text",schema:{html:{rule:string(1e5),required:!0}}}),defineBlock({type:"image",label:"Image",component:"cms/blocks/image",icon:"i-hugeicons-image-01",schema:{src:{rule:url(),required:!0},alt:{rule:string(300),required:!0},caption:{rule:string(500)},width:{rule:oneOf(["content","wide","full"])}}}),defineBlock({type:"columns",label:"Columns",component:"cms/blocks/columns",icon:"i-hugeicons-layout-3-column",schema:{columns:{rule:(value)=>Array.isArray(value)&&value.length>=1&&value.length<=4&&value.every((col)=>col&&typeof col==="object"&&typeof col.html==="string")?!0:"1-4 columns, each with an html string",required:!0}}}),defineBlock({type:"cta",label:"Call to action",component:"cms/blocks/cta",icon:"i-hugeicons-cursor-pointer-02",schema:{heading:{rule:string(300),required:!0},body:{rule:string(1000)},buttonLabel:{rule:string(80),required:!0},buttonHref:{rule:url(),required:!0}}}),defineBlock({type:"embed",label:"Embed",component:"cms/blocks/embed",icon:"i-hugeicons-embed",schema:{src:{rule:url(),required:!0},title:{rule:string(300),required:!0},aspect:{rule:oneOf(["16:9","4:3","1:1"])}}}),defineBlock({type:"form",label:"Form",component:"cms/blocks/form",icon:"i-hugeicons-checklist",schema:{formUuid:{rule:(value)=>typeof value==="string"&&/^[0-9a-f-]{36}$/i.test(value)?!0:"must be a form uuid",required:!0}}})];export function registerDefaultBlocks(){registerBlocks(defaultBlocks)}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/cms",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.75.64",
5
+ "version": "0.75.65",
6
6
  "description": "Stacks cms utilities.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -58,14 +58,14 @@
58
58
  "prepublishOnly": "bun run build"
59
59
  },
60
60
  "dependencies": {
61
- "@stacksjs/database": "0.75.64",
62
- "@stacksjs/error-handling": "0.75.64",
63
- "@stacksjs/orm": "0.75.64",
64
- "@stacksjs/path": "0.75.64",
65
- "@stacksjs/sites": "0.75.64",
66
- "@stacksjs/slug": "0.75.64",
61
+ "@stacksjs/database": "0.75.65",
62
+ "@stacksjs/error-handling": "0.75.65",
63
+ "@stacksjs/orm": "0.75.65",
64
+ "@stacksjs/path": "0.75.65",
65
+ "@stacksjs/sites": "0.75.65",
66
+ "@stacksjs/slug": "0.75.65",
67
67
  "@stacksjs/stx": "^0.2.359",
68
- "@stacksjs/validation": "0.75.64",
68
+ "@stacksjs/validation": "0.75.65",
69
69
  "ts-medium-editor": "^0.2.0",
70
70
  "ts-slug": "^0.1.2",
71
71
  "ts-spreadsheets": "^0.2.5"