@eduardoalvarez/arrecife 0.5.0 → 0.5.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.5.1](https://github.com/Proskynete/arrecife/compare/v0.5.0...v0.5.1) (2026-08-31)
4
+
5
+
6
+ ### 🐛 Correcciones
7
+
8
+ * **components:** la firma del pie va con la primera fila, no la última ([1a854ab](https://github.com/Proskynete/arrecife/commit/1a854ab7d71e66ab4998802ae3dc498f96e47b57))
9
+
3
10
  ## [0.5.0](https://github.com/Proskynete/arrecife/compare/v0.4.0...v0.5.0) (2026-08-31)
4
11
 
5
12
 
package/dist/index.cjs CHANGED
@@ -3121,37 +3121,43 @@ function Footer({
3121
3121
  className,
3122
3122
  ...props
3123
3123
  }) {
3124
+ const firma = /* @__PURE__ */ jsxRuntime.jsxs(Text, { variant: "meta", tone: "muted", as: "p", className: "ml-auto shrink-0", children: [
3125
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { "aria-hidden": "true", className: "text-accent", children: [
3126
+ "$",
3127
+ " "
3128
+ ] }),
3129
+ "cd ~/",
3130
+ naming.domain,
3131
+ "/",
3132
+ year
3133
+ ] });
3134
+ const filas = [
3135
+ brand2 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: brand2 }, "marca") : null,
3136
+ children ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "gap-step-md flex flex-wrap items-center", children }, "enlaces") : null,
3137
+ social && social.length > 0 ? (
3138
+ // 18px de separación, del documento. No es un escalón de `spacing`:
3139
+ // es el ritmo de una fila de iconos, no el de una página.
3140
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center gap-[18px]", children: social.map((red) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
3141
+ "a",
3142
+ {
3143
+ href: red.href,
3144
+ "aria-label": red.label,
3145
+ className: cn(
3146
+ "text-text-muted hover:text-accent transition-standard block cursor-pointer text-[19px]",
3147
+ "rounded-chip focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent"
3148
+ ),
3149
+ children: red.icon
3150
+ }
3151
+ ) }, red.href)) }, "redes")
3152
+ ) : null
3153
+ ].filter(Boolean);
3154
+ const [primera, ...resto] = filas;
3124
3155
  return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-wide px-step-md py-step-xl gap-step-lg mx-auto flex flex-col", children: [
3125
- brand2 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", children: brand2 }) : null,
3126
- children ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "gap-step-md flex flex-wrap items-center", children }) : null,
3127
3156
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gap-step-md flex flex-wrap items-center", children: [
3128
- social && social.length > 0 ? (
3129
- // 18px de separación, del documento. No es un escalón de `spacing`:
3130
- // es el ritmo de una fila de iconos, no el de una página.
3131
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex items-center gap-[18px]", children: social.map((red) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
3132
- "a",
3133
- {
3134
- href: red.href,
3135
- "aria-label": red.label,
3136
- className: cn(
3137
- "text-text-muted hover:text-accent transition-standard block cursor-pointer text-[19px]",
3138
- "rounded-chip focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent"
3139
- ),
3140
- children: red.icon
3141
- }
3142
- ) }, red.href)) })
3143
- ) : null,
3144
- /* @__PURE__ */ jsxRuntime.jsxs(Text, { variant: "meta", tone: "muted", as: "p", className: "ml-auto", children: [
3145
- /* @__PURE__ */ jsxRuntime.jsxs("span", { "aria-hidden": "true", className: "text-accent", children: [
3146
- "$",
3147
- " "
3148
- ] }),
3149
- "cd ~/",
3150
- naming.domain,
3151
- "/",
3152
- year
3153
- ] })
3154
- ] })
3157
+ primera ?? null,
3158
+ firma
3159
+ ] }),
3160
+ resto
3155
3161
  ] }) });
3156
3162
  }
3157
3163
  function FooterLink({ asChild = false, className, ...props }) {
package/dist/index.d.cts CHANGED
@@ -964,6 +964,11 @@ declare function EventCalendar({ events, onCreateEvent, onUpdateEvent, onDeleteE
964
964
  * Los enlaces de redes son iconos SIN texto visible, así que `aria-label` no es
965
965
  * una mejora: es lo único que los hace legibles. Por eso es obligatorio en el
966
966
  * tipo y no una prop opcional que se olvide.
967
+ *
968
+ * La firma va arriba a la derecha, al nivel de la PRIMERA fila que exista, no
969
+ * al final del bloque. Es una decisión de composición y no de estilo: el pie
970
+ * puede llevar marca, enlaces y redes, y colgar la firma de una fila concreta
971
+ * la hunde en cuanto esa fila deja de ser la primera.
967
972
  */
968
973
  type Red = {
969
974
  /** Lo que reemplaza al texto visible. Obligatorio. */
package/dist/index.d.ts CHANGED
@@ -964,6 +964,11 @@ declare function EventCalendar({ events, onCreateEvent, onUpdateEvent, onDeleteE
964
964
  * Los enlaces de redes son iconos SIN texto visible, así que `aria-label` no es
965
965
  * una mejora: es lo único que los hace legibles. Por eso es obligatorio en el
966
966
  * tipo y no una prop opcional que se olvide.
967
+ *
968
+ * La firma va arriba a la derecha, al nivel de la PRIMERA fila que exista, no
969
+ * al final del bloque. Es una decisión de composición y no de estilo: el pie
970
+ * puede llevar marca, enlaces y redes, y colgar la firma de una fila concreta
971
+ * la hunde en cuanto esa fila deja de ser la primera.
967
972
  */
968
973
  type Red = {
969
974
  /** Lo que reemplaza al texto visible. Obligatorio. */
package/dist/index.js CHANGED
@@ -2584,37 +2584,43 @@ function Footer({
2584
2584
  className,
2585
2585
  ...props
2586
2586
  }) {
2587
+ const firma = /* @__PURE__ */ jsxs(Text, { variant: "meta", tone: "muted", as: "p", className: "ml-auto shrink-0", children: [
2588
+ /* @__PURE__ */ jsxs("span", { "aria-hidden": "true", className: "text-accent", children: [
2589
+ "$",
2590
+ " "
2591
+ ] }),
2592
+ "cd ~/",
2593
+ naming.domain,
2594
+ "/",
2595
+ year
2596
+ ] });
2597
+ const filas = [
2598
+ brand2 ? /* @__PURE__ */ jsx("div", { className: "flex items-center", children: brand2 }, "marca") : null,
2599
+ children ? /* @__PURE__ */ jsx("div", { className: "gap-step-md flex flex-wrap items-center", children }, "enlaces") : null,
2600
+ social && social.length > 0 ? (
2601
+ // 18px de separación, del documento. No es un escalón de `spacing`:
2602
+ // es el ritmo de una fila de iconos, no el de una página.
2603
+ /* @__PURE__ */ jsx("ul", { className: "flex items-center gap-[18px]", children: social.map((red) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
2604
+ "a",
2605
+ {
2606
+ href: red.href,
2607
+ "aria-label": red.label,
2608
+ className: cn(
2609
+ "text-text-muted hover:text-accent transition-standard block cursor-pointer text-[19px]",
2610
+ "rounded-chip focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent"
2611
+ ),
2612
+ children: red.icon
2613
+ }
2614
+ ) }, red.href)) }, "redes")
2615
+ ) : null
2616
+ ].filter(Boolean);
2617
+ const [primera, ...resto] = filas;
2587
2618
  return /* @__PURE__ */ jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-step-md py-step-xl gap-step-lg mx-auto flex flex-col", children: [
2588
- brand2 ? /* @__PURE__ */ jsx("div", { className: "flex items-center", children: brand2 }) : null,
2589
- children ? /* @__PURE__ */ jsx("div", { className: "gap-step-md flex flex-wrap items-center", children }) : null,
2590
2619
  /* @__PURE__ */ jsxs("div", { className: "gap-step-md flex flex-wrap items-center", children: [
2591
- social && social.length > 0 ? (
2592
- // 18px de separación, del documento. No es un escalón de `spacing`:
2593
- // es el ritmo de una fila de iconos, no el de una página.
2594
- /* @__PURE__ */ jsx("ul", { className: "flex items-center gap-[18px]", children: social.map((red) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
2595
- "a",
2596
- {
2597
- href: red.href,
2598
- "aria-label": red.label,
2599
- className: cn(
2600
- "text-text-muted hover:text-accent transition-standard block cursor-pointer text-[19px]",
2601
- "rounded-chip focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent"
2602
- ),
2603
- children: red.icon
2604
- }
2605
- ) }, red.href)) })
2606
- ) : null,
2607
- /* @__PURE__ */ jsxs(Text, { variant: "meta", tone: "muted", as: "p", className: "ml-auto", children: [
2608
- /* @__PURE__ */ jsxs("span", { "aria-hidden": "true", className: "text-accent", children: [
2609
- "$",
2610
- " "
2611
- ] }),
2612
- "cd ~/",
2613
- naming.domain,
2614
- "/",
2615
- year
2616
- ] })
2617
- ] })
2620
+ primera ?? null,
2621
+ firma
2622
+ ] }),
2623
+ resto
2618
2624
  ] }) });
2619
2625
  }
2620
2626
  function FooterLink({ asChild = false, className, ...props }) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eduardoalvarez/arrecife",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Librería de componentes de la identidad visual de Eduardo Álvarez",
5
5
  "license": "MIT",
6
6
  "author": "Eduardo Esteban Álvarez Castañeda <soy@eduardoalvarez.dev>",