diff --git a/_data/en.yml b/_data/en.yml index a5afbe5..13cdd10 100644 --- a/_data/en.yml +++ b/_data/en.yml @@ -219,3 +219,5 @@ sort: score/desc: "Most relevant first" previous: "Previous" next: "Next" +search: + placeholder: "Search" diff --git a/_data/es.yml b/_data/es.yml index 80959ec..f8d1a65 100644 --- a/_data/es.yml +++ b/_data/es.yml @@ -197,3 +197,5 @@ lorem_ipsum: quis mauris semper feugiat eu id arcu. Quisque quis vehicula ante. Ut hendrerit urna egestas tempor semper. Nam viverra quam turpis. +search: + placeholder: "Buscar" diff --git a/_data/fixtures/card_search.yml b/_data/fixtures/card_search.yml index e83fc37..0953615 100644 --- a/_data/fixtures/card_search.yml +++ b/_data/fixtures/card_search.yml @@ -1,5 +1,6 @@ --- tags: - - Topic-community - - Status-pending - \ No newline at end of file + - title: Topic-community + url: "" + - title: Status-pending + url: "" diff --git a/_data/fixtures/post.yml b/_data/fixtures/post.yml index 40a061d..46e80b2 100644 --- a/_data/fixtures/post.yml +++ b/_data/fixtures/post.yml @@ -3,9 +3,11 @@ items: - title: "Title post" created_at: "2026-05-31 14:54:26.236392904 -06:00" image: - path: 'public/8k2m9p2w1rqw6mza53x9plkq98/floral-compaq.jpg' - description: 'floral compaq image' - content: 'Celebrating the mid-point between solar solstices with 2000+ words of updates on the (many) happenings in our corner of radical technology co-operativism.' + path: "public/8k2m9p2w1rqw6mza53x9plkq98/floral-compaq.jpg" + description: "floral compaq image" + content: "Celebrating the mid-point between solar solstices with 2000+ words of updates on the (many) happenings in our corner of radical technology co-operativism." tags: - - Topic-community - - Status-pending \ No newline at end of file + - title: Topic-community + url: "" + - title: Status-pending + url: "" diff --git a/_data/layouts/document.yml b/_data/layouts/document.yml index fdd6325..d71bbea 100644 --- a/_data/layouts/document.yml +++ b/_data/layouts/document.yml @@ -57,10 +57,10 @@ categories: en: "Tool" article: en: "Article" -topic: +topics: type: "new_predefined_array" label: - en: "Topic" + en: "Topics" help: en: "Select Topic" values: diff --git a/_data/layouts/post.yml b/_data/layouts/post.yml index b02957f..8cf333c 100644 --- a/_data/layouts/post.yml +++ b/_data/layouts/post.yml @@ -37,10 +37,10 @@ image: en: "Main image description" help: en: "Describe the image for accesibility purposes and for indexation in search engines" -topic: +topics: type: "new_predefined_array" label: - en: "Topic" + en: "Topics" help: en: "Select Topic" values: diff --git a/_en/2026-06-30-tech-stack.markdown b/_en/2026-06-30-tech-stack.markdown index 8bd28e3..4e703c3 100644 --- a/_en/2026-06-30-tech-stack.markdown +++ b/_en/2026-06-30-tech-stack.markdown @@ -5,7 +5,7 @@ image: description: '' path: categories: [] -topic: +topics: - tech status: pending author: [] diff --git a/_en/2026-06-30-the-community.markdown b/_en/2026-06-30-the-community.markdown index e675629..8710f16 100644 --- a/_en/2026-06-30-the-community.markdown +++ b/_en/2026-06-30-the-community.markdown @@ -5,7 +5,7 @@ image: description: '' path: categories: [] -topic: +topics: - community status: in_progress author: [] diff --git a/_includes/card_search.html b/_includes/card_search.html index 8f186ec..c1f984b 100644 --- a/_includes/card_search.html +++ b/_includes/card_search.html @@ -3,25 +3,37 @@ title: type: 'string' description: type: 'string' + default: '' url: type: 'string' tags: type: 'array' default: [] +categories: + type: 'array' + default: [] +topics: + type: 'array' + default: [] --- - -
+
- +

{{- title -}}

-

{{- description -}}

- {% for tag in tags %} - {{- tag -}} - {% endfor %} +

{{- description -}}

+
+ {% for tag in tags %} + {% render 'tag.html', **tag %} + {% endfor %} + {% for category in categories %} + {% render 'category.html', **category %} + {% endfor %} + {% for topic in topics %} + {% render 'topic.html', **topic %} + {% endfor %} +
- - diff --git a/_includes/category.html b/_includes/category.html new file mode 100644 index 0000000..fe8f8a0 --- /dev/null +++ b/_includes/category.html @@ -0,0 +1,12 @@ +--- +url: + type: 'string' +title: + type: 'string' +--- + + {{- title -}} + diff --git a/_includes/forms/checkbox_group.html b/_includes/forms/checkbox_group.html index 3bd3e2a..b8a1326 100644 --- a/_includes/forms/checkbox_group.html +++ b/_includes/forms/checkbox_group.html @@ -4,6 +4,9 @@ id: name: type: 'string' default: '' +value: + type: 'string' + default: '' required: type: 'bool' default: false @@ -13,12 +16,16 @@ attributes: class: type: 'string' default: 'form-select' +placeholder: + type: 'string' + default: '' items: type: 'array' --- +{% assign checked = value %} {% assign base_id = id | append: '_' %} {% assign name = name | default: id | append: '[]' %} -{% assign attributes = attributes +{% assign general_attributes = attributes | append: ' ' | append: 'data-required-checkbox-target="checkbox" data-action="required-checkbox#change"' %} @@ -45,6 +52,8 @@ items: {% assign value = input_item | try: 'value' | default: input_item %} {% assign item = input_item | try: 'item' | default: value %} {% assign id = base_id | append: uuid %} + {% assign attributes = general_attributes %} + {% assign attributes = checked | equals: value | ternary: 'checked ', '' | append: attributes %} {% render 'forms/checkbox.html', name:, id:, value:, item:, attributes: %} {% endfor %} diff --git a/_includes/forms/checkbox_group_with_other.html b/_includes/forms/checkbox_group_with_other.html index f138a1a..18cf390 100644 --- a/_includes/forms/checkbox_group_with_other.html +++ b/_includes/forms/checkbox_group_with_other.html @@ -4,6 +4,9 @@ id: name: type: 'string' default: '' +value: + type: 'string' + default: '' required: type: 'bool' default: false @@ -13,6 +16,9 @@ attributes: class: type: 'string' default: 'form-select' +placeholder: + type: 'string' + default: '' items: type: 'array' other: @@ -22,9 +28,13 @@ other: en: 'Other' ar: 'Other' --- +{% comment %} + TODO: Set the value on the other input if no checkbox matches +{% endcomment %} +{% assign checked = value %} {% assign base_id = id | append: '_' %} {% assign name = name | default: id | append: '[]' %} -{% assign attributes = attributes +{% assign general_attributes = attributes | append: ' ' | append: 'data-required-checkbox-target="checkbox" data-action="required-checkbox#change"' %} @@ -51,6 +61,7 @@ other: {% assign value = input_item | try: 'value' | default: input_item %} {% assign item = input_item | try: 'item' | default: value %} {% assign id = base_id | append: uuid %} + {% assign attributes = checked | equals: value | ternary: 'checked ', '' | append: general_attributes %} {% render 'forms/checkbox.html', name:, id:, value:, item:, attributes: %} {% endfor %} @@ -76,6 +87,6 @@ other: data-form-dependencies-condition="checked" hidden > - {% render 'forms/text.html', id: other_id, name:, attributes: 'disabled' %} + {% render 'forms/text.html', id: other_id, name:, attributes: 'disabled', placeholder: %}
diff --git a/_includes/forms/datalist.html b/_includes/forms/datalist.html index 9cac52e..49e8448 100644 --- a/_includes/forms/datalist.html +++ b/_includes/forms/datalist.html @@ -4,6 +4,9 @@ id: name: type: 'string' default: '' +value: + type: 'string' + default: '' items: type: 'array' class: @@ -29,6 +32,8 @@ required: render 'forms/input.html', type: 'text', id:, + name:, + value: class:, list: datalist_id, placeholder:, diff --git a/_includes/forms/date.html b/_includes/forms/date.html index 38a0f35..5253378 100644 --- a/_includes/forms/date.html +++ b/_includes/forms/date.html @@ -22,5 +22,11 @@ value: attributes: type: 'string' default: '' +maxlength: + type: 'integer' + default: 0 +minlength: + type: 'integer' + default: 0 --- {% render 'forms/input.html', type: 'date', id:, name:, class:, placeholder:, required:, autofocus:, value:, attributes: %} diff --git a/_includes/forms/date_of_birth.html b/_includes/forms/date_of_birth.html index fc2b021..58da6a8 100644 --- a/_includes/forms/date_of_birth.html +++ b/_includes/forms/date_of_birth.html @@ -28,6 +28,12 @@ label: es: 'Edad' en: 'Age' ar: 'Age' +maxlength: + type: 'integer' + default: 0 +minlength: + type: 'integer' + default: 0 --- {% assign age_attributes = attributes | append: ' ' | append: 'readonly data-dob-target="age"' %} {% assign attributes = 'data-dob-target="date" data-action="dob#update"' %} diff --git a/_includes/forms/email.html b/_includes/forms/email.html index 8180c50..2d9dff5 100644 --- a/_includes/forms/email.html +++ b/_includes/forms/email.html @@ -21,6 +21,12 @@ value: default: '' attributes: type: 'string' - default: '' + default: 'autocomplete="email"' +maxlength: + type: 'integer' + default: 0 +minlength: + type: 'integer' + default: 0 --- {% render 'forms/input.html', id:, type: "email", class:, required:, autofocus:, name:, placeholder:, attributes: %} diff --git a/_includes/forms/form_fields.html b/_includes/forms/form_fields.html index 4f17931..f9af30f 100644 --- a/_includes/forms/form_fields.html +++ b/_includes/forms/form_fields.html @@ -24,6 +24,11 @@ default_label_class_by_type: {% assign depends_on = field[1] | try: 'depends_on' %} {% assign dependents = field[1] | try: 'dependents' %} {% assign attributes = '' %} + {% assign help = field[1] | try: 'help' %} + + {% if help %} + {% assign attributes = attributes | append: ' aria-describedby="' | append: id | append: '"' %} + {% endif %} {% if type == 'end_row' %} @@ -75,10 +80,17 @@ default_label_class_by_type: {% endblock %} {% continue %} + {% elsif type == 'lead' %} + {% block 'forms/lead.html', id: %} + {{ field[1].label[locale] }} + {% endblock %} + + {% continue %} {% else %} {% assign class = default_label_class_by_type | try: type %} {% block 'forms/label.html', id:, class: %} {{ field[1].label[locale] }} + {{ required | value_if: '*' }} {% endblock %} {% endif %} @@ -94,7 +106,8 @@ default_label_class_by_type: {% endcomment %} {% case default_value_types[type] %} {% when 'array' %} - {% render template, required:, id:, name:, items: default_values, attributes: %} + {% assign value = default_values | try: 'value' | default: '' %} + {% render template, required:, id:, name:, items: default_values, attributes:, placeholder:, value: %} {% when 'hash' %} {% assign value = default_values | try: 'value' %} {% assign item = default_values | try: 'item' | default: value %} @@ -103,7 +116,16 @@ default_label_class_by_type: {% assign schema = field[1].schema %} {% render template, schema:, default_value_types:, name:, default_label_class_by_type: %} {% else %} - {% render template, required:, id:, name:, value: default_values, attributes: %} + {% assign placeholder = field[1] | try: 'placeholder' | try: locale | default: '' %} + {% assign maxlength = field[1] | try: 'maxlength' %} + {% assign minlength = field[1] | try: 'minlength' %} + {% render template, required:, id:, name:, value: default_values, attributes:, maxlength:, minlength:, placeholder: %} {% endcase %} + + {% if help %} +
+ {{- help[locale] -}} +
+ {% endif %} {% endfor %} diff --git a/_includes/forms/hidden.html b/_includes/forms/hidden.html index b3cbc13..1c881b5 100644 --- a/_includes/forms/hidden.html +++ b/_includes/forms/hidden.html @@ -7,8 +7,11 @@ name: value: type: 'string' default: '' +placeholder: + type: 'string' + default: '' required: type: 'bool' default: false --- -{% render 'forms/input.html', type: 'hidden', id:, name:, value:, required: %} +{% render 'forms/input.html', type: 'hidden', id:, name:, value:, required:, placeholder: %} diff --git a/_includes/forms/lead.html b/_includes/forms/lead.html new file mode 100644 index 0000000..a635b1d --- /dev/null +++ b/_includes/forms/lead.html @@ -0,0 +1,7 @@ +--- +id: + type: 'string' +--- +

+ {{- yield -}} +

diff --git a/_includes/forms/long_text.html b/_includes/forms/long_text.html index 067e0fc..f1537f4 100644 --- a/_includes/forms/long_text.html +++ b/_includes/forms/long_text.html @@ -19,6 +19,12 @@ value: attributes: type: 'string' default: '' +maxlength: + type: 'integer' + default: 2048 +minlength: + type: 'integer' + default: 0 --- diff --git a/_includes/forms/number.html b/_includes/forms/number.html index 3a8959e..5503f81 100644 --- a/_includes/forms/number.html +++ b/_includes/forms/number.html @@ -35,4 +35,4 @@ attributes: {%- assign attributes = attributes | append: ' ' | append: number_attributes -%} -{% render 'forms/text.html', id:, class:, placeholder:, required:, autofocus:, name:, value:, placeholder:, minlength:, maxlength:, attributes: %} +{% render 'forms/text.html', id:, class:, placeholder:, required:, autofocus:, name:, value:, minlength:, maxlength:, attributes: %} diff --git a/_includes/forms/radio_group.html b/_includes/forms/radio_group.html index 8b75ca7..69cf80c 100644 --- a/_includes/forms/radio_group.html +++ b/_includes/forms/radio_group.html @@ -4,6 +4,9 @@ id: name: type: 'string' default: '' +value: + type: 'string' + default: '' required: type: 'bool' default: false @@ -13,17 +16,23 @@ attributes: class: type: 'string' default: 'form-select' +placeholder: + type: 'string' + default: '' items: type: 'array' --- {% assign base_id = id | append: '_' %} {% assign name = name | default: id | append: '[]' %} +{% assign checked = value %} +{% assign general_attributes = attributes %} {% for input_item in items %} {% capture uuid %}{% uuid %}{% endcapture %} {% assign value = input_item | try: 'value' | default: input_item %} {% assign item = input_item | try: 'item' | default: value %} {% assign id = base_id | append: uuid %} + {% assign attributes = checked | equals: value | ternary: 'checked ', '' | append: general_attributes %} {% render 'forms/radio.html', name:, id:, value:, item:, required:, attributes: %} {% endfor %} diff --git a/_includes/forms/select.html b/_includes/forms/select.html index f7c36a7..dc12d31 100644 --- a/_includes/forms/select.html +++ b/_includes/forms/select.html @@ -4,6 +4,9 @@ id: name: type: 'string' default: '' +value: + type: 'string' + default: '' required: type: 'bool' default: false @@ -13,9 +16,13 @@ attributes: class: type: 'string' default: 'form-select' +placeholder: + type: 'string' + default: '' items: type: 'array' --- +{% assign selected = value %} + -
- -
+
+ {% render 'forms/select.html', id: 'sort', items: sort, value: 'score/desc', placeholder: 'Sort by' %} +
-
- {% render 'forms/select.html', id: 'sort', items: sort %} -
+
+ {% assign value = name | equals: 'categories' | ternary: selected_value, '' %} + {% render 'forms/select.html', id: 'categories', items: categories, placeholder: categories_title[locale], value: %} +
-
- +
+ {% assign value = name | equals: 'topics' | ternary: selected_value, '' %} + {% render 'forms/select.html', id: 'topics', items: topics, placeholder: topics_title[locale], value: %} +
+ +
+ {% assign value = name | equals: 'status' | ternary: selected_value, '' %} + {% render 'forms/select.html', id: 'status', items: status, placeholder: status_title[locale], value: %} +
+ +
+ {% assign value = name | equals: 'tags' | ternary: selected_value, '' %} + {% render 'forms/select.html', id: 'tags', items: tags, placeholder: tags_title[locale], value: %} +
+ +
+ +
diff --git a/_includes/status.html b/_includes/status.html new file mode 100644 index 0000000..daabff7 --- /dev/null +++ b/_includes/status.html @@ -0,0 +1,12 @@ +--- +url: + type: 'string' +title: + type: 'string' +--- + + {{- title -}} + diff --git a/_includes/tag.html b/_includes/tag.html new file mode 100644 index 0000000..cf74b7f --- /dev/null +++ b/_includes/tag.html @@ -0,0 +1,12 @@ +--- +url: + type: 'string' +title: + type: 'string' +--- + + {{- title -}} + diff --git a/_includes/theme/card_search.html b/_includes/theme/card_search.html index bdccd38..69a45ce 100644 --- a/_includes/theme/card_search.html +++ b/_includes/theme/card_search.html @@ -6,12 +6,12 @@ locale: i18n: type: hash --- +{% assign tags = data.fixtures.card_search.tags %} -{%assign tags = data.fixtures.card_search.tags %} - -{% render 'card_search.html', +{% + render 'card_search.html', title: '11node', description: 'bried description of this node. Up to a couple line at most.', - url:'#?' , + url:'#?', tags: %} diff --git a/_includes/topic.html b/_includes/topic.html new file mode 100644 index 0000000..0253c1b --- /dev/null +++ b/_includes/topic.html @@ -0,0 +1,12 @@ +--- +url: + type: 'string' +title: + type: 'string' +--- + + {{- title -}} + diff --git a/_layouts/default.html b/_layouts/default.html index 1bb01c0..948fb27 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -66,13 +66,21 @@ {% for category in page.categories %} - + {% endfor %} {% for tag in page.tags %} - + {% endfor %} + {% for topic in page.topics %} + + {% endfor %} + + {% if page.status %} + + {% endif %} +
- {% render 'sutty/title.html', - title: page.title, - description: page.description, - class: 'text-primary' - %} + {% render 'sutty/title.html', title: page.title, description: page.description, class: 'text-primary' %} {%- if page.image.path -%} {% for size in site.images.sizes %} @@ -61,9 +57,9 @@ layout: default {%- endif -%} {%- if page.tags %} - + {%- for tag in page.tags -%} - + {%- endfor -%} {%- endif -%} diff --git a/_layouts/page.html b/_layouts/page.html index 51e1992..13f18db 100644 --- a/_layouts/page.html +++ b/_layouts/page.html @@ -5,11 +5,7 @@ layout: default
- {% render 'sutty/title.html', - title: page.title, - description: page.description, - class: 'text-primary' - %} + {% render 'sutty/title.html', title: page.title, description: page.description, class: 'text-primary' %} {%- if page.image.path -%} {% for size in site.images.sizes %} @@ -57,9 +53,9 @@ layout: default {%- endif -%} {%- if page.tags %} - + {%- for tag in page.tags -%} - + {%- endfor -%} {%- endif -%} diff --git a/_layouts/post.html b/_layouts/post.html index 7108b6d..da13ed8 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -3,18 +3,14 @@ layout: default --- {% assign license = site.posts | find: 'layout', 'license' %} -{%- assign posts = site.posts | where: 'layout', 'post' | sort: 'date'-%} +{%- assign posts = site.posts | where: 'layout', 'post' | sort: 'date' -%} {% assign prev = page | prev: posts %} {% assign next = page | next: posts %}
- {% render 'sutty/title.html', - title: page.title, - description: page.description, - class: 'text-primary' - %} + {% render 'sutty/title.html', title: page.title, description: page.description, class: 'text-primary' %} {%- if page.image.path -%} {% for size in site.images.sizes %} @@ -62,20 +58,26 @@ layout: default {%- endif -%} {%- if page.tags %} - + {%- for tag in page.tags -%} - + {%- endfor -%} {%- endif -%}
- -