Gathering detailed insights and metrics for @stackpress/incept
Gathering detailed insights and metrics for @stackpress/incept
Gathering detailed insights and metrics for @stackpress/incept
Gathering detailed insights and metrics for @stackpress/incept
@stackpress/incept-user
This package is a user interface that enables auth to be used in an Incept app.
@stackpress/incept-api
This package is a user interface that enables oauth and rest APIs to be used in an Incept app.
@stackpress/incept-ink
This package generates form, fields, formats, search and detail template files based on models in and Incept client using the Ink template engine.
@stackpress/incept-email
This package is enables email in an Incept app.
npm install @stackpress/incept
Typescript
Module System
Node Version
NPM Version
TypeScript (89.57%)
Ink (10.05%)
JavaScript (0.21%)
CSS (0.17%)
Total Downloads
3,052
Last Day
28
Last Week
51
Last Month
118
Last Year
3,052
Apache-2.0 License
3 Stars
118 Commits
5 Forks
1 Watchers
1 Branches
1 Contributors
Updated on Mar 08, 2025
Latest Version
0.1.26
Package Id
@stackpress/incept@0.1.26
Unpacked Size
140.97 kB
Size
24.44 kB
File Count
51
NPM Version
10.5.2
Node Version
20.13.1
Published on
Mar 04, 2025
Cumulative downloads
Total Downloads
Last Day
250%
28
Compared to previous day
Last Week
218.8%
51
Compared to previous week
Last Month
-27.6%
118
Compared to previous month
Last Year
0%
3,052
Compared to previous year
Incept is a content management framework.
See Example for use case.
The following attributes can be applied to model types in an idea file.
1model User @icon("user") @label("User" "Users") {}
Attribute | Description | Attributes | Example |
---|---|---|---|
@icon(string) | An icon representation of a model. Uses font awesome names. | @icon("user") | |
@template(string) | Used to describe each row in a model | @template("User {{name}}") | |
@label(string string) | A friendly name that represents the model | @label("User" "Users") | |
@active | A flag that represents the active field. Active fields are changed when deleting or restoring a row, as an alternative to actually deleting the row in the database. | ||
@default(string|number|boolean) | The default value applied when creating a row if no value was provided. |
@default(1)
@default("user")
@default(true)
@default("now()")
@default("nanoid()")
@default("nanoid(10)")
@default("cuid()")
@default("cuid(10)")
| |
@generated | A flag that represents that the value of this column is generated, bypassing the need to be validated | ||
@id | A flag that represents the models identifier. If multiple ids then the combination will be used to determine each rows uniqueness. | ||
@searchable | A flag deonoting this column is searchable and will be considered in a search field for example. Also used to know which columns need to be optimized in the database. | ||
@sortable | A flag deonoting this column is sortable. Also used to know which columns need to be optimized in the database. | ||
@label(string) | A label that will be shown to represent this column instead of the actual column name. | @label("Name") | |
@min(number) | The minimum number value that will be accepted. This is also a consideration when determining the database type. | @min(10) | |
@max(number) | The maximum number value that will be accepted. This is also a consideration when determining the database type. | @max(100) | |
@step(number) | The incremental amount value that will be used when changing the columns value. This is also a consideration when determining the database type. |
@step(1)
@step(0.01)
| |
@relation(config) | Maps columns in the model that is related to another model. |
local: string
foreign: string name?: string |
@relation({ local "userId" foreign "id" })
@relation({ name "memberships" local "ownerId" foreign "id" })
@relation({ name "connections" local "memberId" foreign "id" })
|
@unique | A flag that ensures no duplicate value can be added to the model | ||
@updated | A flag that will automatically update the timestamp whenever a row is changed. |
The following validation attributes can be applied to model columns in an idea file.
1name String @is.required @is.cgt(10)
Attribute | Description | Example |
---|---|---|
@is.required | Validates that a value must be given before being inserted. | |
@is.notempty | Validates that a value is something as opposed to an empty string. | |
@is.eq(string|number) | Validates that the value is explicitly equal to the given argument |
@is.eq(10)
@is.eq("foobar")
|
@is.ne(string|number) | Validates that the value is explicitly not equal to the given argument |
@is.neq(10)
@is.neq("foobar")
|
@is.option(string|number[]) | Validates that the value is one of the given options | @is.option([ 1 2 "foo" 3 "bar" ]) |
@is.regex(string) | Validates that the value matches the given regular expression | @is.regex("[a-z]$") |
@is.date | Validates that the value is a date | |
@is.future | Validates that the value is a future date | |
@is.past | Validates that the value is a past date | |
@is.present | Validates that the value is the present date | |
@is.gt(number) | Validate that the value is greater than the given number | @is.gt(10) |
@is.ge(number) | Validate that the value is greater than or equal to the given number | @is.ge(10) |
@is.lt(number) | Validate that the value is less than the given number | @is.lt(10) |
@is.le(number) | Validate that the value is less than or equal to the given number | @is.le(10) |
@is.ceq(number) | Validate that the character count of the value is equal to the given number | @is.ceq(10) |
@is.cgt(number) | Validate that the character count of the value is greater than or equal to the given number | @is.cle(10) |
@is.cge(number) | Validate that the character count of the value is less than the given number | @is.cge(10) |
@is.clt(number) | Validate that the character count of the value is less than or equal to the given number | @is.clt(10) |
@is.cle(number) | Validate that the character count of the value is less than or equal to the given number | @is.cle(10) |
@is.weq(number) | Validate that the word count of the value is equal to the given number | @is.weq(10) |
@is.wgt(number) | Validate that the word count of the value is greater than or equal to the given number | @is.wle(10) |
@is.wge(number) | Validate that the word count of the value is less than the given number | @is.wge(10) |
@is.wlt(number) | Validate that the word count of the value is less than or equal to the given number | @is.wlt(10) |
@is.wle(number) | Validate that the word count of the value is less than or equal to the given number | @is.wle(10) |
@is.cc | Validates that the value is a credit card | |
@is.color | Validates that the value is a color value (color name or hex) | |
@is.email | Validates that the value is an email | |
@is.hex | Validates that the value is a hexidecimal | |
@is.price | Validates that the value is a price number (ie. 2 decimal numbers) | |
@is.url | Validates that the value is a URL | |
@is.boolean | Validates that the value is a boolean | |
@is.number | Validates that the value is a number format | |
@is.float | Validates that the value is a float format | |
@is.integer | Validates that the value is an integer format | |
@is.object | Validates that the value is an object |
The following fields can be applied to model columns in an idea file.
1name String @field.text
Attribute | Description | Attributes | Example |
---|---|---|---|
@field.color | Use a color field to represent this column in a form | ||
@field.checkbox(attributes?) | Use a checkbox to represent this column in a form |
label: string
check: boolean circle: boolean square: boolean rounded: boolean blue: boolean orange: boolean |
@field.checkbox
@field.checkbox({ label "Enabled" circle true })
|
@field.country(attributes?) | Use a country dropdown to represent this column in a form | placeholder: string |
@field.country
@field.country({ placeholder "Select Country" })
|
@field.currency(attributes?) | Use a currency dropdown to represent this column in a form | placeholder: string |
@field.currency
@field.currency({ placeholder "Select Currency" })
|
@field.date | Use a date field to represent this column in a form | ||
@field.datetime | Use a date time field to represent this column in a form | ||
@field.editor(attributes?) | Use a code editor to represent this column in a form |
lang: html|md|css|js|ts
numbers: boolean |
@field.editor
@field.editor({ lang "html" numbers true })
|
@field.file | Use a file input to represent this column in a form | ||
@field.filelist | Use a file list fieldset to represent this column in a form | ||
@field.input | Use an input field to represent this column in a form | ||
@field.markdown(attributes?) | Use a markdown editor to represent this column in a form | numbers: boolean |
@field.markdown
@field.markdown({ numbers true })
|
@field.mask(attributes) | Use an input mask to represent this column in a form | mask: string |
@field.mask
@field.mask({ mask "999-999-999" })
|
@field.metadata | Use a key value fieldset to represent this column in a form | ||
@field.number(attributes?) | Uses a number field to represent this column in a form |
min: number
max: number step: number separator: string decimal: string absolute: boolean |
@field.number
@field.number({ min 0 max 10 step 0.01 separator "," decimal "." absolute true })
|
@field.password | Uses a password field to represent this column in a form | ||
@field.range(attributes?) | Uses a range field to represent this column in a form |
min: number
max: number step: number width: number |
@field.range
@field.range({ min 0 max 10 step 0.01 width 100 })
|
@field.rating(attributes?) | Uses a rating field to represent this column in a form | max: number |
@field.rating
@field.rating({ max 5 })
|
@field.select(attributes?) | Uses a select dropdown to represent this column in a form | placeholder: string |
@field.select
@field.select({ placeholder "Select Country" })
|
@field.slug | Uses an input field that transforms the value into a slug to represent this column in a form | ||
@field.switch(attributes?) | Uses a switch toggle to represent this column in a form |
rounded: boolean
onoff: boolean yesno: boolean checkex: boolean sunmoon: boolean ridge: boolean smooth: boolean blue: boolean orange: boolean green: boolean |
@field.switch
@field.switch({ label "Enabled" yesno true })
|
@field.textarea(attributes?) | Uses a textarea field to represent this column in a form | rows: number |
@field.textarea
@field.textarea({ rows 10 })
|
@field.taglist | Uses a tag field to represent this column in a form | ||
@field.textlist | Uses a text list fieldset to represent this column in a form | ||
@field.time | Uses a time field to represent this column in a form | ||
@field.wysiwyg(attributes?) | Uses a WYSIWYG to represent this column in a form |
history: boolean
font: boolean size: boolean format: boolean paragraph: boolean blockquote: boolean style: boolean color: boolean highlight: boolean text: boolean remove: boolean indent: boolean align: boolean rule: boolean list: boolean lineheight: boolean table: boolean link: boolean image: boolean video: boolean audio: boolean fullscreen: boolean showblocks: boolean code: boolean dir: boolean |
@field.wysiwyg
@field.wysiwyg({ font true size true format true })
|
The following filter fields can be applied to model columns in an idea file.
1name String @field.text
Attribute | Description | Attributes | Example |
---|---|---|---|
@filter.color | Use a color field to represent this column in a filter form | ||
@filter.checkbox(attributes?) | Use a checkbox to represent this column in a filter form |
label: string
check: boolean circle: boolean square: boolean rounded: boolean blue: boolean orange: boolean |
@filter.checkbox
@filter.checkbox({ label "Enabled" circle true })
|
@filter.country(attributes?) | Use a country dropdown to represent this column in a filter form | placeholder: string |
@filter.select
@filter.select({ placeholder "Select Country" })
|
@filter.currency(attributes?) | Use a currency dropdown to represent this column in a filter form | placeholder: string |
@filter.currency
@filter.currency({ placeholder "Select Currency" })
|
@filter.date | Use a date field to represent this column in a filter form | ||
@filter.datetime | Use a date time field to represent this column in a filter form | ||
@filter.file | Use a file input to represent this column in a filter form | ||
@filter.input | Use an input field to represent this column in a filter form | ||
@filter.mask(attributes) | Use an input mask to represent this column in a filter form | mask: string |
@filter.mask
@filter.mask({ mask "999-999-999" })
|
@filter.number(attributes?) | Uses a number field to represent this column in a filter form |
min: number
max: number step: number separator: string decimal: string absolute: boolean |
@filter.number
@filter.number({ min 0 max 10 step 0.01 separator "," decimal "." absolute true })
|
@filter.password | Uses a password field to represent this column in a filter form | ||
@filter.range(attributes?) | Uses a range field to represent this column in a filter form |
min: number
max: number step: number width: number |
@filter.range
@filter.range({ min 0 max 10 step 0.01 width 100 })
|
@filter.rating(attributes?) | Uses a rating field to represent this column in a filter form | max: number |
@filter.rating
@filter.rating({ max 5 })
|
@filter.select(attributes?) | Uses a select dropdown to represent this column in a filter form | placeholder: string |
@filter.select
@filter.select({ placeholder "Select Country" })
|
@filter.slug | Uses an input field that transforms the value into a slug to represent this column in a filter form | ||
@filter.switch(attributes?) | Uses a switch toggle to represent this column in a filter form |
rounded: boolean
onoff: boolean yesno: boolean checkex: boolean sunmoon: boolean ridge: boolean smooth: boolean blue: boolean orange: boolean green: boolean |
@filter.switch
@filter.switch({ label "Enabled" yesno true })
|
@filter.time | Uses a time field to represent this column in a filter form |
Attribute | Description | Attributes | Example |
---|---|---|---|
@span.date | Use a pair of date fields as a span to represent this column in a filter form | ||
@span.datetime | Use a pair of date time fields as a span to represent this column in a filter form | ||
@span.input | Use a pair of input fields as a span to represent this column in a filter form | ||
@span.number(attributes?) | Use a pair of number fields as a span to represent this column in a filter form |
min: number
max: number step: number separator: string decimal: string absolute: boolean |
@span.number
@span.number({ min 0 max 10 step 0.01 separator "," decimal "." absolute true })
|
@span.range(attributes?) | Use a range field as a span to represent this column in a filter form |
min: number
max: number step: number width: number |
@span.range
@span.range({ min 0 max 10 step 0.01 width 100 })
|
@span.rating(attributes?) | Use a pair of rating fields as a span to represent this column in a filter form | max: number |
@span.rating
@span.rating({ max 5 })
|
@span.select(attributes?) | Use a pair of select dropdowns as a span to represent this column in a filter form | placeholder: string |
@span.select
@span.select({ placeholder "Select Country" })
|
@span.time | Use a pair of time fields as a span to represent this column in a filter form |
The following list format fields can be applied to model columns in an idea file.
1created Datetime @list.date({ locale "en" })
Attribute | Description | Attributes | Example |
---|---|---|---|
@list.hide | Hides this column in a formatted list of results | ||
@list.code(attributes?) | Uses a code format to represent this column in a formatted list of results |
lang: string
numbers: boolean inline: boolean trim: boolean ltrim: boolean rtrim: boolean |
@list.code
@list.code(lang "en" trim true)
|
@list.color(attributes?) | Uses a code color to represent this column in a formatted list of results | box: boolean text: boolean |
@list.color
@list.color(box true text true)
|
@list.country(attributes?) | Uses a country format to represent this column in a formatted list of results | flag: boolean text: boolean |
@list.country
@list.country(flag true text true)
|
@list.currency(attributes?) | Uses a currency format to represent this column in a formatted list of results |
flag: boolean
text: boolean |
@list.currency
@list.currency(flag true text true)
|
@list.date(attributes?) | Uses a date format to represent this column in a formatted list of results |
locale: string
format: string |
@list.date
@list.date(locale "en" format "MMMM D, YYYY, h:mm:ss a")
|
@list.email | Uses an email format to represent this column in a formatted list of results | ||
@list.formula(attributes) | Outputs the value of the given formula in a formatted list of results |
formula: string
data: object |
@list.formula(formula "{x} + {this} + {y}" data { x 3 y 4 })
|
@list.html(attributes?) | Uses a raw HTML format to represent this column in a formatted list of results |
ordered: boolean
indent: number spacing: number |
@list.html
@list.html({ ordered true indent 10 spacing 10 })
|
@list.image | Uses a image format to represent this column in a formatted list of results | ||
@list.imagelist | Uses an image carousel to represent this column in a formatted list of results. Ideally for an array of strings. | ||
@list.json | Uses a json format to represent this column in a formatted list of results. Ideally for arrays or objects. | ||
@list.link | Uses a clickable link to represent this column in a formatted list of results | ||
@list.list | Uses a list (ordered or unordered) to represent this column in a formatted list of results. Ideally for an array of strings | ||
@list.markdown | Converts the column value from markdown to raw HTML to represent this column in a formatted list of results | ||
@list.metadata(attributes?) | Outputs the keys and values of the columns value in tabular format. Ideally for a key value object. |
padding: number
align: left|right|center format: boolean |
@list.metadata
@list.metadata({ padding 10 align "left" format true })
|
@list.number(attributes?) | Uses a number format to represent this column in a formatted list of results |
separator: string
decimal: string decimals: number absolute: boolean |
@list.number
@list.number({ separator "," decimal "." decimals 4 absolute true })
|
@list.overflow(attributes?) | Uses a format that considers text overflows to represent this column in a formatted list of results |
length: number
words: boolean hellip: boolean |
@list.overflow
@list.overflow({ length 10 words true hellip true})
|
@list.phone(attributes?) | Uses a phone format to represent this column in a formatted list of results | label: string |
@list.phone
@list.phone({ label "Call Me Maybe" })
|
@list.rating(attributes?) | Uses a rating format to represent this column in a formatted list of results |
max: number
remainder: boolean round: round|ceil|floor spacing: number |
@list.rating
@list.rating({ max 5 remainder true round "floor" spacing 10 })
|
@list.separated(attributes?) | Uses a separator format to represent this column in a formatted list of results. Ideally for an array of strings. | separator: string |
@list.separated
@list.separated({ separator ", " })
|
@list.table(attributes?) | Uses a tablular format to represent this column in a formatted list of results. Ideally for an array of objects. |
top: boolean
left: boolean right: boolean padding: number align: left|right|center background: color border: color header: color stripe: color |
@list.table
@list.table({ align "left" top true padding 100 background "blue" header "#CCC" })
|
@list.taglist(attributes?) | Uses a tag list format to represent this column in a formatted list of results. Ideally for an array of strings. |
curved: boolean
rounded: boolean pill: boolean info: boolean warning: boolean success: boolean error: boolean muted: boolean primary: boolean color: color secondary: boolean outline: boolean solid: boolean transparent: boolean |
@list.taglist
@list.taglist({ curved true info true outline true })
|
@list.template(attributes) | Uses a template to generate a text to represent this column in a formatted list of results | template: string | @list.template({ template "{{foo}} and {{bar}}" }) |
@list.text(attributes?) | Uses a text format to represent this column in a formatted list of results |
upper: boolean
lower: boolean capital: boolean |
@list.text
@list.text({ upper true })
|
@list.yesno(attributes?) | Converts a boolean to a string representation to represent this column in a formatted list of results | yes: string no: string |
@list.yesno
@list.yesno({ yes "Yep" no "Nah" })
|
The following view format fields can be applied to model columns in an idea file.
1created Datetime @view.date({ locale "en" })
Attribute | Description | Attributes | Example |
---|---|---|---|
@view.hide | Hides this column in a view | ||
@view.code(attributes?) | Uses a code format to represent this column in a view |
lang: string
numbers: boolean inline: boolean trim: boolean ltrim: boolean rtrim: boolean |
@view.code
@view.code(lang "en" trim true)
|
@view.color(attributes?) | Uses a code color to represent this column in a view | box: boolean text: boolean |
@view.color
@view.color(box true text true)
|
@view.country(attributes?) | Uses a country format to represent this column in a view | flag: boolean text: boolean |
@view.country
@view.country(flag true text true)
|
@view.currency(attributes?) | Uses a currency format to represent this column in a view | flag: boolean text: boolean |
@view.currency
@view.currency(flag true text true)
|
@view.date(attributes?) | Uses a date format to represent this column in a view | locale: string format: string |
@view.date
@view.date(locale "en" format "MMMM D, YYYY, h:mm:ss a")
|
@view.email | Uses an email format to represent this column in a view | ||
@view.formula(attributes?) | Outputs the value of the given formula in a view | formula: string | @view.formula(formula "{x} + {this} + {y}" data { x 3 y 4 }) |
@view.html(attributes?) | Uses a raw HTML format to represent this column in a view |
ordered: boolean
indent: number spacing: number |
@view.html
@view.html({ ordered true indent 10 spacing 10 })
|
@view.image | Uses a image format to represent this column in a view | ||
@view.imagelist | Uses an image carousel to represent this column in a view. Ideally for an array of strings. | ||
@view.json | Uses a json format to represent this column in a view. Ideally for arrays or objects. | ||
@view.link | Uses a clickable link to represent this column in a view | ||
@view.list | Uses a list (ordered or unordered) to represent this column in a view. Ideally for an array of strings | ||
@view.markdown | Converts the column value from markdown to raw HTML to represent this column in a view | ||
@view.metadata(attributes?) | Outputs the keys and values of the columns value in tabular format. Ideally for a key value object. |
padding: number
align: left|right|center format: boolean |
@view.metadata
@view.metadata({ padding 10 align "left" format true })
|
@view.number(attributes?) | Uses a number format to represent this column in a view |
separator: string
decimal: string decimals: boolean absolute: boolean |
@view.number
@view.number({ separator "," decimal "." decimals 4 absolute true })
|
@view.overflow(attributes?) | Uses a format that considers text overflows to represent this column in a view |
length: number
words: boolean hellip: boolean |
@view.overflow
@view.overflow({ length 10 words true hellip true})
|
@view.phone(attributes?) | Uses a phone format to represent this column in a view | label: string |
@view.phone
@view.phone({ label "Call Me Maybe" })
|
@view.rating(attributes?) | Uses a rating format to represent this column in a view |
max: number
remainder: boolean round: round|ceil|floor spacing: number |
@view.rating
@view.rating({ max 5 remainder true round "floor" spacing 10 })
|
@view.separated(attributes?) | Uses a separator format to represent this column in a view. Ideally for an array of strings. | separator: string |
@view.separated
@view.separated({ separator ", " })
|
@view.table(attributes?) | Uses a tablular format to represent this column in a view. Ideally for an array of objects. |
top: boolean
left: boolean right: boolean padding: number align: left|right|center background: color border: color header: color stripe: color |
@view.table
@view.table({ align "left" top true padding 100 background "blue" header "#CCC" })
|
@view.taglist(attributes?) | Uses a tag list format to represent this column in a view. Ideally for an array of strings. |
curved: boolean
rounded: boolean pill: boolean info: boolean warning: boolean success: boolean error: boolean muted: boolean primary: boolean color: boolean secondary: boolean outline: boolean solid: boolean transparent: boolean |
@view.taglist
@view.taglist({ curved true info true outline true })
|
@view.template(attributes?) | Uses a template to generate a text to represent this column in a view | template: string | @view.template({ template "{{foo}} and {{bar}}" }) |
@view.text(attributes?) | Uses a text format to represent this column in a view |
upper: boolean
lower: boolean capital: boolean |
@view.text
@view.text({ upper true })
|
@view.yesno(attributes?) | Converts a boolean to a string representation to represent this column in a view | yes: string no: string |
@view.yesno
@view.yesno({ yes "Yep" no "Nah" })
|
No vulnerabilities found.
No security vulnerabilities found.