rizzo-css 0.0.85 → 0.0.87

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 (113) hide show
  1. package/README.md +1 -1
  2. package/dist/rizzo.min.css +4 -4
  3. package/package.json +1 -1
  4. package/scaffold/landing/favicon.svg +18 -0
  5. package/scaffold/landing/index.html +20 -0
  6. package/scaffold/minimal/favicon.svg +18 -0
  7. package/scaffold/minimal/index.html +17 -0
  8. package/scaffold/react/base/index.html +1 -0
  9. package/scaffold/react/base/package.json +1 -1
  10. package/scaffold/react/base/public/favicon.svg +18 -0
  11. package/scaffold/react/variants/full/package.json +1 -1
  12. package/scaffold/react/variants/full/src/App.tsx +11 -1
  13. package/scaffold/react/variants/full/src/index.css +124 -0
  14. package/scaffold/react/variants/full/src/layouts/DocsLayout.tsx +53 -23
  15. package/scaffold/react/variants/full/src/views/DocsComponents.tsx +0 -1
  16. package/scaffold/react/variants/full/src/views/DocsGettingStarted.tsx +0 -1
  17. package/scaffold/react/variants/full/src/views/DocsIndex.tsx +0 -1
  18. package/scaffold/shared/favicon.svg +18 -0
  19. package/scaffold/svelte/base/src/app.html +1 -0
  20. package/scaffold/svelte/base/src/routes/+layout.svelte +10 -1
  21. package/scaffold/svelte/base/static/favicon.svg +18 -0
  22. package/scaffold/svelte/variants/full/src/app.html +1 -0
  23. package/scaffold/svelte/variants/full/src/routes/+layout.svelte +15 -2
  24. package/scaffold/svelte/variants/full/src/routes/docs/+layout.svelte +150 -23
  25. package/scaffold/svelte/variants/full/src/routes/docs/+layout.ts +3 -0
  26. package/scaffold/svelte/variants/full/src/routes/docs/+page.svelte +0 -1
  27. package/scaffold/svelte/variants/full/src/routes/docs/+page.ts +7 -0
  28. package/scaffold/svelte/variants/full/src/routes/docs/components/+page.svelte +0 -5
  29. package/scaffold/svelte/variants/full/src/routes/docs/components/+page.ts +6 -0
  30. package/scaffold/svelte/variants/full/src/routes/docs/getting-started/+page.svelte +0 -5
  31. package/scaffold/svelte/variants/full/src/routes/docs/getting-started/+page.ts +6 -0
  32. package/scaffold/svelte/variants/full/src/routes/docs/overview/+page.ts +6 -0
  33. package/scaffold/svelte/variants/full/src/routes/themes/+page.svelte +0 -7
  34. package/scaffold/svelte/variants/full/static/favicon.svg +18 -0
  35. package/scaffold/vanilla/README-RIZZO.md +1 -1
  36. package/scaffold/vanilla/components/accordion.html +33 -0
  37. package/scaffold/vanilla/components/alert-dialog.html +33 -0
  38. package/scaffold/vanilla/components/alert.html +33 -0
  39. package/scaffold/vanilla/components/aspect-ratio.html +33 -0
  40. package/scaffold/vanilla/components/avatar.html +33 -0
  41. package/scaffold/vanilla/components/back-to-top.html +33 -0
  42. package/scaffold/vanilla/components/badge.html +33 -0
  43. package/scaffold/vanilla/components/breadcrumb.html +33 -0
  44. package/scaffold/vanilla/components/button-group.html +33 -0
  45. package/scaffold/vanilla/components/button.html +33 -0
  46. package/scaffold/vanilla/components/calendar.html +33 -0
  47. package/scaffold/vanilla/components/cards.html +33 -0
  48. package/scaffold/vanilla/components/carousel.html +33 -0
  49. package/scaffold/vanilla/components/chart.html +33 -0
  50. package/scaffold/vanilla/components/collapsible.html +33 -0
  51. package/scaffold/vanilla/components/command.html +33 -0
  52. package/scaffold/vanilla/components/context-menu.html +33 -0
  53. package/scaffold/vanilla/components/copy-to-clipboard.html +33 -0
  54. package/scaffold/vanilla/components/dashboard.html +33 -0
  55. package/scaffold/vanilla/components/direction.html +33 -0
  56. package/scaffold/vanilla/components/divider.html +33 -0
  57. package/scaffold/vanilla/components/docs-sidebar.html +33 -0
  58. package/scaffold/vanilla/components/dropdown.html +33 -0
  59. package/scaffold/vanilla/components/empty.html +33 -0
  60. package/scaffold/vanilla/components/font-switcher.html +33 -0
  61. package/scaffold/vanilla/components/footer.html +33 -0
  62. package/scaffold/vanilla/components/forms.html +33 -0
  63. package/scaffold/vanilla/components/hover-card.html +33 -0
  64. package/scaffold/vanilla/components/icons.html +33 -0
  65. package/scaffold/vanilla/components/index.html +33 -0
  66. package/scaffold/vanilla/components/input-group.html +33 -0
  67. package/scaffold/vanilla/components/input-otp.html +33 -0
  68. package/scaffold/vanilla/components/kbd.html +33 -0
  69. package/scaffold/vanilla/components/label.html +33 -0
  70. package/scaffold/vanilla/components/menubar.html +33 -0
  71. package/scaffold/vanilla/components/modal.html +33 -0
  72. package/scaffold/vanilla/components/navbar.html +33 -0
  73. package/scaffold/vanilla/components/pagination.html +33 -0
  74. package/scaffold/vanilla/components/popover.html +33 -0
  75. package/scaffold/vanilla/components/progress-bar.html +33 -0
  76. package/scaffold/vanilla/components/range-calendar.html +33 -0
  77. package/scaffold/vanilla/components/resizable.html +33 -0
  78. package/scaffold/vanilla/components/scroll-area.html +33 -0
  79. package/scaffold/vanilla/components/search.html +33 -0
  80. package/scaffold/vanilla/components/separator.html +33 -0
  81. package/scaffold/vanilla/components/settings.html +33 -0
  82. package/scaffold/vanilla/components/sheet.html +33 -0
  83. package/scaffold/vanilla/components/skeleton.html +33 -0
  84. package/scaffold/vanilla/components/slider.html +33 -0
  85. package/scaffold/vanilla/components/sound-effects.html +33 -0
  86. package/scaffold/vanilla/components/spinner.html +33 -0
  87. package/scaffold/vanilla/components/switch.html +33 -0
  88. package/scaffold/vanilla/components/table.html +33 -0
  89. package/scaffold/vanilla/components/tabs.html +33 -0
  90. package/scaffold/vanilla/components/theme-switcher.html +33 -0
  91. package/scaffold/vanilla/components/toast.html +33 -0
  92. package/scaffold/vanilla/components/toggle-group.html +33 -0
  93. package/scaffold/vanilla/components/toggle.html +33 -0
  94. package/scaffold/vanilla/components/tooltip.html +33 -0
  95. package/scaffold/vanilla/favicon.svg +18 -0
  96. package/scaffold/vanilla/index.html +33 -0
  97. package/scaffold/vanilla/variants/dashboard/favicon.svg +18 -0
  98. package/scaffold/vanilla/variants/dashboard/index.html +1 -0
  99. package/scaffold/vanilla/variants/docs/favicon.svg +18 -0
  100. package/scaffold/vanilla/variants/docs/index.html +1 -0
  101. package/scaffold/vanilla/variants/full/favicon.svg +18 -0
  102. package/scaffold/vanilla/variants/full/index.html +19 -0
  103. package/scaffold/vue/Footer.vue +43 -4
  104. package/scaffold/vue/base/index.html +1 -0
  105. package/scaffold/vue/base/package.json +1 -1
  106. package/scaffold/vue/base/public/favicon.svg +18 -0
  107. package/scaffold/vue/variants/full/package.json +1 -1
  108. package/scaffold/vue/variants/full/src/App.vue +13 -1
  109. package/scaffold/vue/variants/full/src/layouts/DocsLayout.vue +151 -24
  110. package/scaffold/vue/variants/full/src/router/index.ts +31 -4
  111. package/scaffold/vue/variants/full/src/views/DocsComponents.vue +0 -1
  112. package/scaffold/vue/variants/full/src/views/DocsGettingStarted.vue +0 -1
  113. package/scaffold/vue/variants/full/src/views/DocsIndex.vue +0 -1
package/README.md CHANGED
@@ -72,7 +72,7 @@ import 'rizzo-css';
72
72
  **Without a bundler (plain HTML):** Use a CDN. Both unpkg and jsDelivr resolve the package root to the built CSS (via the `unpkg` / `jsdelivr` fields in this package). For reliability or to pin a version, use the explicit path:
73
73
 
74
74
  ```html
75
- <!-- unpkg (pin version: replace @latest with @0.0.85 or any version) -->
75
+ <!-- unpkg (pin version: replace @latest with @0.0.87 or any version) -->
76
76
  <link rel="stylesheet" href="https://unpkg.com/rizzo-css@latest/dist/rizzo.min.css" />
77
77
 
78
78
  <!-- or jsDelivr -->
@@ -130,8 +130,8 @@ div.navbar__link{background:none;border:none;color:inherit;cursor:pointer;font:i
130
130
  .back-to-top[data-visible="true"]{transition:none}}@media (width <= 640px){.settings__panel{max-width:100%;width:100%}}.modal-root{inset:0;pointer-events:none;position:fixed;z-index:var(--z-modal)}.modal-root > .modal__overlay{backdrop-filter:blur(var(--blur-sm));background-color:oklch(from var(--shadow-color) l c h/60%);bottom:0;left:0;opacity:0;pointer-events:none;position:fixed;right:0;top:0;transition:opacity var(--transition-slow) ease;z-index:0}.modal-root > .modal__overlay[aria-hidden="false"]{opacity:1;pointer-events:auto}.modal-root > .modal{pointer-events:none;z-index:1}.modal-root > .modal[aria-hidden="false"]{pointer-events:auto}.modal__overlay{backdrop-filter:blur(var(--blur-sm));background-color:oklch(from var(--shadow-color) l c h/60%);bottom:0;left:0;opacity:0;pointer-events:none;position:fixed;right:0;top:0;transition:opacity var(--transition-slow) ease;z-index:var(--z-modal-backdrop)}.modal__overlay[aria-hidden="false"]{opacity:1;pointer-events:auto}.modal{background-color:var(--background);border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;left:50%;max-height:var(--vh-90);max-width:var(--max-height-modal);opacity:0;pointer-events:none;position:fixed;top:50%;transform:translate(-50%,-50%);transition:opacity var(--transition-slow) ease,transform var(--transition-slow) ease;width:100%;z-index:var(--z-modal)}.modal[aria-hidden="false"]{opacity:1;pointer-events:auto}.modal__header{align-items:center;border-bottom:var(--border-width) solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:var(--spacing-6)}.modal__title{color:var(--text);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0}.modal__close{align-items:center;background:none;border:none;border-radius:var(--radius);color:var(--text-dim);cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:var(--spacing-2);transition:background-color var(--transition-base),color var(--transition-base)}.modal__close:hover{background-color:var(--background-alt);color:var(--text)}.modal__close:focus{box-shadow:0 0 0 3px oklch(from var(--accent) l c h/10%);outline:none}.modal__body{flex:1;min-height:0;overflow-y:auto;padding:var(--spacing-6)}.modal__footer{border-top:var(--border-width) solid var(--border);display:flex;flex-shrink:0;gap:var(--spacing-3);justify-content:flex-end;padding:var(--spacing-6)}.modal__footer:empty{display:none}.modal--sm{max-width:var(--spacing-96)}.modal--md{max-width:var(--max-height-modal)}.modal--lg{max-width:var(--max-width-modal-lg)}
131
131
  .reduced-motion .modal,.reduced-motion .modal__overlay{transition:none}@media (width <= 640px){.modal{bottom:auto;left:auto;margin:var(--spacing-4);max-height:95vh;max-width:95vw;right:auto;top:auto}.modal,.modal[aria-hidden="false"]{transform:none}
132
132
  .modal__body,
133
- .modal__footer,.modal__header{padding:var(--spacing-4)}}.dashboard{display:flex;min-height:100vh}.dashboard__sidebar{background:var(--background-alt);border-right:1px solid var(--border);flex-shrink:0;padding:var(--spacing-4);width:16rem}.dashboard__nav{display:flex;flex-direction:column;gap:var(--spacing-1)}.dashboard__nav-link{border-radius:var(--radius-md);color:var(--text);display:block;padding:var(--spacing-2) var(--spacing-3);text-decoration:none}.dashboard__nav-link:hover{background:var(--background)}.dashboard__nav-link--active{background:var(--accent);color:var(--accent-text)}.dashboard__main{flex:1;overflow:auto;padding:var(--spacing-6)}@media (width <= 768px){.dashboard{flex-direction:column}.dashboard__sidebar{border-bottom:1px solid var(--border);border-right:none;width:100%}}.copy-to-clipboard{align-items:center;background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:inline-flex;font-family:var(--font-family-mono);font-size:var(--font-size-sm);gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);position:relative;transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.copy-to-clipboard:hover{background-color:var(--background);border-color:var(--accent);color:var(--accent)}.copy-to-clipboard:focus-visible{outline:var(--outline-width) solid var(--accent);outline-offset:var(--outline-offset)}.copy-to-clipboard__text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy-to-clipboard__icon{align-items:center;color:var(--icon);display:flex;flex-shrink:0;height:var(--spacing-4);justify-content:center;transition:opacity var(--transition-base),transform var(--transition-base);width:var(--spacing-4)}.copy-to-clipboard__icon--check{opacity:0;position:absolute;right:var(--spacing-3);transform:scale(var(--scale-80))}.copy-to-clipboard__icon--check:not(.copy-to-clipboard__icon--hidden){opacity:1;transform:scale(var(--scale-100))}.copy-to-clipboard__icon--copy.copy-to-clipboard__icon--hidden{opacity:0;transform:scale(var(--scale-80))}.copy-to-clipboard__feedback{border-width:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.copy-to-clipboard--icon-only{padding:var(--spacing-2)}.copy-to-clipboard--icon-only .copy-to-clipboard__text{border-width:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.copy-to-clipboard--icon-only .copy-to-clipboard__icon--check{right:var(--spacing-2)}.alert{align-items:flex-start;background-color:var(--alert-bg);border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--text);display:flex;gap:var(--spacing-3);margin-bottom:var(--spacing-3);min-width:0;padding:var(--spacing-4) var(--spacing-5);position:relative;transition:opacity var(--transition-base),transform var(--transition-base);width:100%}.alert:last-child{margin-bottom:0}.alert__content{flex:1;min-width:0}.alert__close{align-items:center;background:none;border:1px solid transparent;border-radius:var(--radius);color:inherit;cursor:pointer;display:flex;fill:none;flex-shrink:0;height:var(--spacing-6);justify-content:center;margin:calc(var(--spacing-1)*-1) calc(var(--spacing-2)*-1) calc(var(--spacing-1)*-1) 0;opacity:var(--opacity-80);padding:0;stroke:currentcolor;transition:opacity var(--transition-base),background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base);width:var(--spacing-6)}.alert__close:hover{background-color:oklch(from var(--background) l c h/25%);border-color:var(--border);color:var(--text);opacity:1}.alert__close:focus-visible{opacity:1;outline:var(--outline-width) solid currentcolor;outline-offset:var(--outline-offset)}.alert--success{background-color:var(--alert-success-bg);border-color:var(--success);color:var(--success-text)}.alert--error{background-color:var(--alert-error-bg);border-color:var(--error);color:var(--error-text)}.alert--warning{background-color:var(--alert-warning-bg);border-color:var(--warning)}.alert--warning,.alert--warning .alert__content,
134
- .alert--warning .alert__content strong{color:var(--warning-text)}.alert--warning .alert__close{color:var(--warning-text);opacity:.9}.alert--warning .alert__close:hover{color:var(--text)}.alert--info{background-color:var(--alert-info-bg);border-color:var(--info);color:var(--info-text)}.alert-examples-container{align-items:stretch;display:flex;flex-direction:column;justify-content:center;min-height:8rem}.example{background:var(--background-alt);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin:var(--spacing-6) 0;padding:var(--spacing-5)}.example-title{color:var(--text-dim);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wider);margin-bottom:var(--spacing-3);text-transform:uppercase}.react-doc-demo,
133
+ .modal__footer,.modal__header{padding:var(--spacing-4)}}.dashboard{display:flex;min-height:100vh}.dashboard__sidebar{background:var(--background-alt);border-right:1px solid var(--border);flex-shrink:0;padding:var(--spacing-4);width:16rem}.dashboard__nav{display:flex;flex-direction:column;gap:var(--spacing-1)}.dashboard__nav-link{border-radius:var(--radius-md);color:var(--text);display:block;padding:var(--spacing-2) var(--spacing-3);text-decoration:none}.dashboard__nav-link:hover{background:var(--background)}.dashboard__nav-link--active{background:var(--accent);color:var(--accent-text)}.dashboard__main{flex:1;overflow:auto;padding:var(--spacing-6)}@media (width <= 768px){.dashboard{flex-direction:column}.dashboard__sidebar{border-bottom:1px solid var(--border);border-right:none;width:100%}}.copy-to-clipboard{align-items:center;background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:inline-flex;font-family:var(--font-family-mono);font-size:var(--font-size-sm);gap:var(--spacing-2);padding:var(--spacing-2) var(--spacing-3);position:relative;transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.copy-to-clipboard:hover{background-color:var(--background);border-color:var(--accent);color:var(--accent)}.copy-to-clipboard:focus-visible{outline:var(--outline-width) solid var(--accent);outline-offset:var(--outline-offset)}.copy-to-clipboard__text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.copy-to-clipboard__icon{align-items:center;color:var(--icon);display:flex;flex-shrink:0;height:var(--spacing-4);justify-content:center;transition:opacity var(--transition-base),transform var(--transition-base);width:var(--spacing-4)}.copy-to-clipboard__icon--check{opacity:0;position:absolute;right:var(--spacing-3);transform:scale(var(--scale-80))}.copy-to-clipboard__icon--check:not(.copy-to-clipboard__icon--hidden){opacity:1;transform:scale(var(--scale-100))}.copy-to-clipboard__icon--copy.copy-to-clipboard__icon--hidden{opacity:0;transform:scale(var(--scale-80))}.copy-to-clipboard__feedback{border-width:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.copy-to-clipboard--icon-only{padding:var(--spacing-2)}.copy-to-clipboard--icon-only .copy-to-clipboard__text{border-width:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.copy-to-clipboard--icon-only .copy-to-clipboard__icon--check{right:var(--spacing-2)}.alert{align-items:flex-start;background-color:var(--alert-bg);border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--text);display:flex;gap:var(--spacing-3);margin-bottom:var(--spacing-3);min-width:0;padding:var(--spacing-4) var(--spacing-5);position:relative;transition:opacity var(--transition-base),transform var(--transition-base);width:100%}.alert:last-child{margin-bottom:0}.alert__content{flex:1;min-width:0}.alert__close{align-items:center;background:none;border:1px solid transparent;border-radius:var(--radius);color:inherit;cursor:pointer;display:flex;fill:none;flex-shrink:0;height:var(--spacing-6);justify-content:center;margin:calc(var(--spacing-1)*-1) calc(var(--spacing-2)*-1) calc(var(--spacing-1)*-1) 0;opacity:var(--opacity-80);padding:0;stroke:currentcolor;transition:opacity var(--transition-base),background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base);width:var(--spacing-6)}.alert__close:hover{background-color:oklch(from var(--background) l c h/25%);border-color:var(--border);color:var(--text);opacity:1}.alert__close:focus-visible{opacity:1;outline:var(--outline-width) solid currentcolor;outline-offset:var(--outline-offset)}.alert--success{background-color:var(--alert-success-bg);border-color:var(--success);color:var(--color-success-800)}.alert--error{background-color:var(--alert-error-bg);border-color:var(--error);color:var(--color-error-800)}.alert--warning{background-color:var(--alert-warning-bg);border-color:var(--warning)}.alert--warning,.alert--warning .alert__close,.alert--warning .alert__content,
134
+ .alert--warning .alert__content strong{color:var(--color-warning-800)}.alert--warning .alert__close{opacity:.9}.alert--warning .alert__close:hover{color:var(--text)}.alert--info{background-color:var(--alert-info-bg);border-color:var(--info);color:var(--color-info-800)}.alert-examples-container{align-items:stretch;display:flex;flex-direction:column;justify-content:center;min-height:8rem}.example{background:var(--background-alt);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin:var(--spacing-6) 0;padding:var(--spacing-5)}.example-title{color:var(--text-dim);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wider);margin-bottom:var(--spacing-3);text-transform:uppercase}.react-doc-demo,
135
135
  .vue-doc-demo-wrapper{min-height:2.5rem}.example-demo{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-3)}.toast{max-width:var(--spacing-96);pointer-events:none;position:fixed;width:100%;z-index:var(--z-toast)}.toast .alert{box-shadow:var(--shadow-lg);margin-bottom:var(--spacing-2);pointer-events:auto}
136
136
  .toast--bottom-right .alert,.toast--top-right .alert{animation:toast-slide-in-right var(--transition-slow) ease-out}
137
137
  .toast--bottom-left .alert,.toast--top-left .alert{animation:toast-slide-in-left var(--transition-slow) ease-out}
@@ -190,7 +190,7 @@ div.navbar__link{background:none;border:none;color:inherit;cursor:pointer;font:i
190
190
  .search__no-results-text{color:var(--text-dim);font-size:var(--font-size-sm);margin:0}.search__results-list{display:flex!important;flex-direction:column;gap:var(--spacing-1);min-height:0;padding-bottom:var(--spacing-4)}.search__results-list::after{content:"";display:block;flex-shrink:0;height:var(--spacing-8)}
191
191
  .search__results-list.is-hidden,.search__results-list[hidden]{display:none!important}.search__results-list:not([hidden], .is-hidden){display:flex!important;opacity:1!important;visibility:visible!important}.search__result-item{background-color:var(--background-alt)!important;border:var(--border-width) solid var(--border);border-radius:var(--radius-lg);box-sizing:border-box;color:var(--text)!important;cursor:pointer;display:block!important;margin-bottom:0;min-height:auto!important;opacity:1!important;padding:var(--spacing-4) var(--spacing-5)!important;position:relative;text-decoration:none;transition:background-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast);visibility:visible!important;width:100%!important;z-index:calc(var(--z-base) + 3)}.search__result-item:hover{background-color:var(--background)!important;border-color:var(--accent);transform:translateX(var(--spacing-1))}
192
192
  .search__result-item:focus-visible,.search__result-item:hover{background-color:var(--background-alt);color:var(--accent);outline:none}.search__result-item[aria-selected="true"]{background-color:var(--background-alt);color:var(--accent);outline:var(--outline-width) solid var(--accent);outline-offset:calc(var(--outline-offset)*-1)}.search__result-item:focus-visible{box-shadow:inset 0 0 0 var(--outline-width) var(--accent);outline:var(--outline-width) solid var(--accent);outline-offset:calc(var(--outline-offset)*-1)}.search__result-category{color:var(--text-dim)!important;font-size:var(--font-size-xs);letter-spacing:var(--letter-spacing-wider);text-transform:uppercase}.search__result-category,.search__result-title{display:block!important;font-weight:var(--font-weight-semibold);margin-bottom:var(--spacing-2);visibility:visible!important}.search__result-title{color:var(--text)!important;font-size:var(--font-size-base);line-height:var(--line-height-snug)}.search__result-content{color:var(--text-dim)!important;display:-webkit-box;font-size:var(--font-size-sm);line-clamp:2;-webkit-line-clamp:2;line-height:var(--line-height-relaxed);-webkit-box-orient:vertical;margin-top:var(--spacing-1);overflow:hidden;visibility:visible!important}.navbar__search-wrapper .search{margin:0}@media (width <= 1024px){.navbar__search-wrapper .search__kbd{display:none}}.search__panel:focus-within{outline:none}@media (prefers-reduced-motion:reduce){.search__overlay,.search__panel,.search__result-item{transition:none}}.breadcrumb{width:100%}.breadcrumb__list{align-items:center;color:var(--text-dim);display:flex;flex-wrap:wrap;font-size:var(--font-size-sm);gap:var(--spacing-1) var(--spacing-2);list-style:none;margin:0;padding:0}.breadcrumb__item{align-items:center;display:inline-flex;gap:var(--spacing-2)}.breadcrumb__item--current .breadcrumb__current{color:var(--text);font-weight:var(--font-weight-medium)}.breadcrumb__link{color:var(--text-dim);text-decoration:none;transition:color var(--transition-base)}.breadcrumb__link:hover{color:var(--accent)}.breadcrumb__link:focus-visible{border-radius:var(--radius);outline:var(--outline-width) solid var(--accent);outline-offset:var(--outline-offset)}.breadcrumb__current{color:var(--text-dim)}.breadcrumb__separator{align-items:center;color:var(--icon-dim);display:inline-flex;flex-shrink:0;opacity:var(--opacity-70);-webkit-user-select:none;-moz-user-select:none;user-select:none}.breadcrumb__separator-icon{color:inherit;transform:rotate(-90deg)}.breadcrumb--slash .breadcrumb__separator-icon{display:none}.breadcrumb--slash .breadcrumb__separator:not(:has(.breadcrumb__separator-icon)){margin:0 var(--spacing-0-125)}@media (width <= 639px){.breadcrumb__list{font-size:var(--font-size-xs);gap:var(--spacing-0-875) var(--spacing-1)}
193
- .breadcrumb__current,.breadcrumb__link{max-width:var(--spacing-24);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.breadcrumb__item--current .breadcrumb__current{max-width:none}}.pagination{width:100%}.pagination__list{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-1);justify-content:center;list-style:none;margin:0;padding:0}.pagination__item,.pagination__link{display:inline-flex}.pagination__link{align-items:center;background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);color:var(--text);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);justify-content:center;min-height:var(--touch-target-min);min-width:var(--touch-target-min);padding:var(--spacing-2) var(--spacing-3);text-decoration:none;transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.pagination__link:hover:not(.pagination__link--disabled, .pagination__link--current){background-color:var(--background);border-color:var(--accent);color:var(--accent)}.pagination__link:focus-visible{outline:var(--outline-width) solid var(--accent);outline-offset:var(--outline-offset)}.pagination__link--current{background-color:var(--background);border-color:var(--accent);color:var(--accent);cursor:default;font-weight:var(--font-weight-semibold)}.pagination__link--disabled{cursor:not-allowed;opacity:var(--opacity-60);pointer-events:none}.pagination__ellipsis{align-items:center;color:var(--text-dim);display:inline-flex;font-size:var(--font-size-sm);justify-content:center;min-height:var(--touch-target-min);min-width:var(--touch-target-min);padding:0 var(--spacing-2);-webkit-user-select:none;-moz-user-select:none;user-select:none}.accordion{background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);overflow:hidden;width:100%}.accordion__item{border-bottom:var(--border-width) solid var(--border)}.accordion__item:last-child{border-bottom:none}.accordion__heading{font-size:inherit;font-weight:inherit;margin:0}.accordion__trigger{align-items:center;background:none;border:none;color:var(--text);cursor:pointer;display:flex;font-family:var(--font-family);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);gap:var(--spacing-2);justify-content:space-between;min-height:var(--touch-target-min);padding:var(--spacing-3) var(--spacing-4);text-align:left;transition:background-color var(--transition-base),color var(--transition-base);width:100%}.accordion__trigger:hover{background-color:var(--background);color:var(--text)}.accordion__trigger:focus-visible{outline:var(--outline-width) solid var(--accent);outline-offset:calc(var(--outline-offset)*-1)}.accordion__trigger--expanded{background-color:var(--background);color:var(--text)}.accordion__title{color:var(--text);flex:1;margin:0}.accordion__icon{color:var(--icon-dim);flex-shrink:0;transition:transform var(--transition-base)}.accordion__trigger--expanded .accordion__icon{color:var(--text-dim);transform:rotate(180deg)}.accordion__panel{max-height:0;overflow:hidden;transition:max-height var(--transition-slow) var(--ease-in-out-cubic)}.accordion__panel[hidden]{display:block;max-height:0}.accordion__panel--expanded{max-height:var(--accordion-panel-max-height,2000px)}.accordion__panel-inner{padding:0 var(--spacing-4) var(--spacing-4)}.accordion__panel-content{color:var(--text);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);padding-top:var(--spacing-2)}
193
+ .breadcrumb__current,.breadcrumb__link{max-width:var(--spacing-24);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.breadcrumb__item--current .breadcrumb__current{max-width:none}}.pagination{width:100%}.pagination__list{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-1);justify-content:center;list-style:none;margin:0;padding:0}.pagination__item,.pagination__link{display:inline-flex}.pagination__link{align-items:center;background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);color:var(--text);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);justify-content:center;min-height:var(--touch-target-min);min-width:var(--touch-target-min);padding:var(--spacing-2) var(--spacing-3);text-decoration:none;transition:background-color var(--transition-base),border-color var(--transition-base),color var(--transition-base)}.pagination__link:hover:not(.pagination__link--disabled, .pagination__link--current){background-color:var(--background);border-color:var(--accent);color:var(--accent)}.pagination__link:focus-visible{outline:var(--outline-width) solid var(--accent);outline-offset:var(--outline-offset)}.pagination__link--current{background-color:var(--background);border-color:var(--accent);color:var(--accent-fg);cursor:default;font-weight:var(--font-weight-semibold)}.pagination__link--disabled{cursor:not-allowed;opacity:var(--opacity-60);pointer-events:none}.pagination__ellipsis{align-items:center;color:var(--text-dim);display:inline-flex;font-size:var(--font-size-sm);justify-content:center;min-height:var(--touch-target-min);min-width:var(--touch-target-min);padding:0 var(--spacing-2);-webkit-user-select:none;-moz-user-select:none;user-select:none}.accordion{background-color:var(--background-alt);border:var(--border-width) solid var(--border);border-radius:var(--radius-md);overflow:hidden;width:100%}.accordion__item{border-bottom:var(--border-width) solid var(--border)}.accordion__item:last-child{border-bottom:none}.accordion__heading{font-size:inherit;font-weight:inherit;margin:0}.accordion__trigger{align-items:center;background:none;border:none;color:var(--text);cursor:pointer;display:flex;font-family:var(--font-family);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);gap:var(--spacing-2);justify-content:space-between;min-height:var(--touch-target-min);padding:var(--spacing-3) var(--spacing-4);text-align:left;transition:background-color var(--transition-base),color var(--transition-base);width:100%}.accordion__trigger:hover{background-color:var(--background);color:var(--text)}.accordion__trigger:focus-visible{outline:var(--outline-width) solid var(--accent);outline-offset:calc(var(--outline-offset)*-1)}.accordion__trigger--expanded{background-color:var(--background);color:var(--text)}.accordion__title{color:var(--text);flex:1;margin:0}.accordion__icon{color:var(--icon-dim);flex-shrink:0;transition:transform var(--transition-base)}.accordion__trigger--expanded .accordion__icon{color:var(--text-dim);transform:rotate(180deg)}.accordion__panel{max-height:0;overflow:hidden;transition:max-height var(--transition-slow) var(--ease-in-out-cubic)}.accordion__panel[hidden]{display:block;max-height:0}.accordion__panel--expanded{max-height:var(--accordion-panel-max-height,2000px)}.accordion__panel-inner{padding:0 var(--spacing-4) var(--spacing-4)}.accordion__panel-content{color:var(--text);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);padding-top:var(--spacing-2)}
194
194
  .accordion__panel-content :global(ol:first-child),.accordion__panel-content :global(p:first-child),
195
195
  .accordion__panel-content :global(ul:first-child){margin-top:0}
196
196
  .accordion__panel-content :global(ol:last-child),.accordion__panel-content :global(p:last-child),
@@ -211,7 +211,7 @@ div.navbar__link{background:none;border:none;color:inherit;cursor:pointer;font:i
211
211
  .carousel__next:disabled,.carousel__prev:disabled{cursor:not-allowed;opacity:.5}
212
212
  .carousel__next svg,.carousel__prev svg{height:24px;width:24px}.carousel__indicators{display:flex;gap:var(--spacing-2);margin:0;padding:0}.carousel__indicator{background:var(--border);border:none;border-radius:var(--radius-full);cursor:pointer;height:var(--spacing-2);padding:0;transition:background var(--transition-fast);width:var(--spacing-2)}.carousel__indicator:hover{background:var(--text-dim)}.carousel__indicator[aria-selected="true"]{background:var(--accent)}.calendar{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-md);display:inline-block;min-width:280px;padding:var(--spacing-4)}.calendar__header{align-items:center;display:flex;gap:var(--spacing-2);justify-content:space-between;margin-bottom:var(--spacing-3)}
213
213
  .calendar__next,.calendar__prev{align-items:center;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:inline-flex;height:36px;justify-content:center;padding:0;transition:background var(--transition-fast);width:36px}
214
- .calendar__next:hover,.calendar__prev:hover{background:var(--border)}.calendar__month{color:var(--text);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}.calendar__grid{display:flex;flex-direction:column;gap:0}.calendar__row{display:grid;gap:0;grid-template-columns:repeat(7,1fr)}.calendar__weekday{color:var(--text-dim);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:var(--spacing-1) var(--spacing-2);text-align:center}.calendar__day{align-items:center;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:inline-flex;font-size:var(--font-size-sm);height:36px;justify-content:center;margin:2px;min-width:36px;padding:0;transition:background var(--transition-fast)}.calendar__day:hover{background:var(--border)}.calendar__day--today{font-weight:var(--font-weight-semibold);outline:2px solid var(--accent);outline-offset:-2px}.calendar__day--selected{background:var(--accent);color:var(--background)}.calendar__day--selected:hover{background:var(--accent-hover);color:var(--background)}.calendar__day--other-month{color:var(--text-dim);opacity:.7}.calendar__day--in-range{background:oklch(from var(--accent) l c h/20%);color:var(--text)}.calendar__day--in-range:hover{background:oklch(from var(--accent) l c h/35%)}
214
+ .calendar__next:hover,.calendar__prev:hover{background:var(--border)}.calendar__month{color:var(--text);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}.calendar__grid{display:flex;flex-direction:column;gap:0}.calendar__row{display:grid;gap:0;grid-template-columns:repeat(7,1fr)}.calendar__weekday{color:var(--text-dim);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:var(--spacing-1) var(--spacing-2);text-align:center}.calendar__day{align-items:center;background:transparent;border:none;border-radius:var(--radius-md);color:var(--text);cursor:pointer;display:inline-flex;font-size:var(--font-size-sm);height:36px;justify-content:center;margin:2px;min-width:36px;padding:0;transition:background var(--transition-fast)}.calendar__day:hover{background:var(--border)}.calendar__day--today{font-weight:var(--font-weight-semibold);outline:2px solid var(--accent);outline-offset:-2px}.calendar__day--selected{background:var(--accent);color:var(--background)}.calendar__day--selected:hover{background:var(--accent-hover);color:var(--background)}.calendar__day--other-month{color:var(--text-dim)}.calendar__day--in-range{background:oklch(from var(--accent) l c h/20%);color:var(--text)}.calendar__day--in-range:hover{background:oklch(from var(--accent) l c h/35%)}
215
215
  .calendar__day--range-end,.calendar__day--range-start{background:var(--accent);color:var(--accent-text)}
216
216
  .calendar__day--range-end:hover,.calendar__day--range-start:hover{background:var(--accent-hover);color:var(--accent-text-on-hover)}.chart{--chart-bar-fill:var(--accent);display:block;width:100%}.chart__bars{align-items:flex-end;display:flex;gap:var(--spacing-2);min-height:120px;padding:var(--spacing-4) 0}.chart__bar-wrap{align-items:center;display:flex;flex:1;flex-direction:column;gap:var(--spacing-1)}.chart__bar{background:var(--chart-bar-fill);border-radius:var(--radius-sm);max-width:2.5rem;min-height:4px;transition:height .2s ease;width:100%}.chart__label{color:var(--text-dim);font-size:var(--font-size-sm)}.command-root{position:relative}.command__overlay{background:oklch(from var(--overlay) l c h/60%);inset:0;z-index:var(--z-modal,4000)}.command__dialog,.command__overlay{animation:overlay-in .15s ease;position:fixed}.command__dialog{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;left:50%;max-height:70vh;top:15%;transform:translateX(-50%);width:min(100% - var(--spacing-8),28rem);z-index:calc(var(--z-modal, 4000) + 1)}.command__search-wrap{border-bottom:1px solid var(--border);padding:var(--spacing-2)}.command__search{background:var(--background);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:var(--font-size-base);padding:var(--spacing-2) var(--spacing-3);width:100%}.command__list{max-height:280px;overflow-y:auto;padding:var(--spacing-2)}.command__item{background:transparent;border:none;border-radius:var(--radius);color:var(--text);cursor:pointer;display:block;font-size:var(--font-size-sm);padding:var(--spacing-2) var(--spacing-3);text-align:left;width:100%}.command__item:hover,
217
217
  .command__item[aria-selected="true"]{background:var(--background-alt)}.command__item kbd{color:var(--text-dim);font-size:var(--font-size-xs);margin-left:var(--spacing-2)}.direction{display:block}.direction--rtl{direction:rtl}.direction--ltr{direction:ltr}.input-otp{display:flex;gap:var(--spacing-2);justify-content:center}.input-otp__digit{background:var(--background);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:var(--font-size-lg);font-variant-numeric:tabular-nums;height:2.5rem;text-align:center;width:2.5rem}.input-otp__digit:focus{outline:2px solid var(--accent);outline-offset:2px}.input-otp__digit::-moz-placeholder{color:var(--text-dim)}.input-otp__digit::placeholder{color:var(--text-dim)}.menubar{align-items:center;background:var(--background-alt);border:1px solid var(--border);border-radius:var(--radius);display:flex;gap:0;min-height:2.5rem;padding:0 var(--spacing-2)}.menubar__item{position:relative}.menubar__trigger{background:transparent;border:none;border-radius:var(--radius);color:var(--text);cursor:pointer;font-size:var(--font-size-sm);padding:var(--spacing-2) var(--spacing-3)}.menubar__menu,.menubar__trigger:hover,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rizzo-css",
3
- "version": "0.0.85",
3
+ "version": "0.0.87",
4
4
  "engines": {
5
5
  "node": ">=18"
6
6
  },
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
2
+ <g>
3
+ <path d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7ZM16 82.4s16.5-8 33-8l12.4-38.3c.5-2 1.8-3.2 3.3-3.2 1.6 0 3 1.3 3.4 3.2l12.4 38.3c19.6 0 33 8 33 8l-28-76c-.8-2.3-2.2-3.7-4-3.7H48c-1.8 0-3.1 1.4-4 3.7l-28 76Z"/>
4
+ </g>
5
+ <path fill="url(#a)" d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7Z"/>
6
+ <defs>
7
+ <linearGradient id="a" x1="64.7" x2="77.4" y1="119.2" y2="77.4" gradientUnits="userSpaceOnUse">
8
+ <stop stop-color="#D83333"/>
9
+ <stop offset="1" stop-color="#F041FF"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <style>
13
+ g { fill: #000; }
14
+ @media (prefers-color-scheme: dark) {
15
+ g { fill: #FFF; }
16
+ }
17
+ </style>
18
+ </svg>
@@ -4,6 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>{{TITLE}}</title>
7
+ <link rel="icon" type="image/svg+xml" href="favicon.svg" />
7
8
  <link rel="stylesheet" href="{{LINK_HREF}}" />
8
9
  </head>
9
10
  <body>
@@ -34,5 +35,24 @@
34
35
  </ul>
35
36
  </section>
36
37
  </main>
38
+ <footer class="footer" role="contentinfo">
39
+ <div class="footer__container">
40
+ <div class="footer__inner">
41
+ <p class="footer__copyright">
42
+ <span class="footer__site-name">Your Product</span> · <span class="footer__year">© 2026</span>
43
+ </p>
44
+ <nav class="footer__nav" aria-label="Footer">
45
+ <ul class="footer__links">
46
+ <li class="footer__link-item"><a class="footer__link" href="#">Get started</a></li>
47
+ <li class="footer__link-item"><a class="footer__link" href="#">Docs</a></li>
48
+ <li class="footer__link-item"><a class="footer__link" href="#">Components</a></li>
49
+ <li class="footer__link-item"><a class="footer__link" href="#">GitHub</a></li>
50
+ <li class="footer__link-item"><a class="footer__link" href="#">Privacy</a></li>
51
+ <li class="footer__link-item"><a class="footer__link" href="#">Terms</a></li>
52
+ </ul>
53
+ </nav>
54
+ </div>
55
+ </div>
56
+ </footer>
37
57
  </body>
38
58
  </html>
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
2
+ <g>
3
+ <path d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7ZM16 82.4s16.5-8 33-8l12.4-38.3c.5-2 1.8-3.2 3.3-3.2 1.6 0 3 1.3 3.4 3.2l12.4 38.3c19.6 0 33 8 33 8l-28-76c-.8-2.3-2.2-3.7-4-3.7H48c-1.8 0-3.1 1.4-4 3.7l-28 76Z"/>
4
+ </g>
5
+ <path fill="url(#a)" d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7Z"/>
6
+ <defs>
7
+ <linearGradient id="a" x1="64.7" x2="77.4" y1="119.2" y2="77.4" gradientUnits="userSpaceOnUse">
8
+ <stop stop-color="#D83333"/>
9
+ <stop offset="1" stop-color="#F041FF"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <style>
13
+ g { fill: #000; }
14
+ @media (prefers-color-scheme: dark) {
15
+ g { fill: #FFF; }
16
+ }
17
+ </style>
18
+ </svg>
@@ -4,10 +4,27 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>{{TITLE}}</title>
7
+ <link rel="icon" type="image/svg+xml" href="favicon.svg" />
7
8
  <link rel="stylesheet" href="{{LINK_HREF}}" />
8
9
  </head>
9
10
  <body>
10
11
  <h1>Hello, Rizzo CSS</h1>
11
12
  <p>Edit this file and add components. Docs: <a href="https://rizzo-css.vercel.app">rizzo-css.vercel.app</a></p>
13
+ <footer class="footer" role="contentinfo">
14
+ <div class="footer__container">
15
+ <div class="footer__inner">
16
+ <p class="footer__copyright">
17
+ <span class="footer__site-name">My App</span> · <span class="footer__year">© 2026</span>
18
+ </p>
19
+ <nav class="footer__nav" aria-label="Footer">
20
+ <ul class="footer__links">
21
+ <li class="footer__link-item"><a class="footer__link" href="https://rizzo-css.vercel.app">Docs</a></li>
22
+ <li class="footer__link-item"><a class="footer__link" href="#">About</a></li>
23
+ <li class="footer__link-item"><a class="footer__link" href="#">Contact</a></li>
24
+ </ul>
25
+ </nav>
26
+ </div>
27
+ </div>
28
+ </footer>
12
29
  </body>
13
30
  </html>
@@ -7,6 +7,7 @@
7
7
  (function(){try{var s=localStorage.getItem('theme');var d='{{DEFAULT_DARK}}';var l='{{DEFAULT_LIGHT}}';var initial=document.documentElement.getAttribute('data-theme');var r=!s?((initial&&initial!=='system')?initial:(matchMedia('(prefers-color-scheme: dark)').matches?d:l)):s==='system'?(matchMedia('(prefers-color-scheme: dark)').matches?d:l):s;document.documentElement.setAttribute('data-theme',r);}catch(e){}})();
8
8
  </script>
9
9
  <link rel="stylesheet" href="/css/rizzo.min.css" />
10
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
10
11
  <title>{{TITLE}}</title>
11
12
  </head>
12
13
  <body>
@@ -16,7 +16,7 @@
16
16
  "@types/react": "^18.3.12",
17
17
  "@types/react-dom": "^18.3.1",
18
18
  "@vitejs/plugin-react": "^4.3.3",
19
- "rizzo-css": "^0.0.85",
19
+ "rizzo-css": "^0.0.87",
20
20
  "typescript": "~5.6.2",
21
21
  "vite": "^6.0.1"
22
22
  }
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
2
+ <g>
3
+ <path d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7ZM16 82.4s16.5-8 33-8l12.4-38.3c.5-2 1.8-3.2 3.3-3.2 1.6 0 3 1.3 3.4 3.2l12.4 38.3c19.6 0 33 8 33 8l-28-76c-.8-2.3-2.2-3.7-4-3.7H48c-1.8 0-3.1 1.4-4 3.7l-28 76Z"/>
4
+ </g>
5
+ <path fill="url(#a)" d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7Z"/>
6
+ <defs>
7
+ <linearGradient id="a" x1="64.7" x2="77.4" y1="119.2" y2="77.4" gradientUnits="userSpaceOnUse">
8
+ <stop stop-color="#D83333"/>
9
+ <stop offset="1" stop-color="#F041FF"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <style>
13
+ g { fill: #000; }
14
+ @media (prefers-color-scheme: dark) {
15
+ g { fill: #FFF; }
16
+ }
17
+ </style>
18
+ </svg>
@@ -17,7 +17,7 @@
17
17
  "@types/react": "^18.3.12",
18
18
  "@types/react-dom": "^18.3.1",
19
19
  "@vitejs/plugin-react": "^4.3.3",
20
- "rizzo-css": "^0.0.85",
20
+ "rizzo-css": "^0.0.87",
21
21
  "typescript": "~5.6.2",
22
22
  "vite": "^6.0.1"
23
23
  }
@@ -33,7 +33,17 @@ export default function App() {
33
33
  <Route path="/themes" element={<Themes />} />
34
34
  </Routes>
35
35
  </main>
36
- <Footer />
36
+ <Footer
37
+ siteName="Rizzo CSS"
38
+ links={[
39
+ { href: '/docs/getting-started', label: 'Getting Started' },
40
+ { href: '/docs', label: 'Docs' },
41
+ { href: '/docs/components', label: 'Components' },
42
+ { href: '/blocks', label: 'Blocks' },
43
+ { href: '/themes', label: 'Themes' },
44
+ { href: 'https://github.com', label: 'GitHub' },
45
+ ]}
46
+ />
37
47
  <BackToTop />
38
48
  <Settings />
39
49
  </>
@@ -1,6 +1,17 @@
1
1
  /* App styles; Rizzo is loaded from /css/rizzo.min.css in index.html */
2
2
 
3
3
  /* Full template: docs layout and home page */
4
+ .docs__outer {
5
+ width: 100%;
6
+ max-width: var(--container-default);
7
+ margin: 0 auto;
8
+ padding: 0 var(--content-padding-x);
9
+ box-sizing: border-box;
10
+ display: flex;
11
+ flex-direction: row;
12
+ flex: 1;
13
+ min-width: 0;
14
+ }
4
15
  .docs__container {
5
16
  box-sizing: border-box;
6
17
  width: 100%;
@@ -9,12 +20,125 @@
9
20
  margin: 0 auto;
10
21
  padding: 0 var(--content-padding-x);
11
22
  }
23
+ .docs__header {
24
+ margin-bottom: var(--section-spacing-lg);
25
+ padding-bottom: var(--spacing-8);
26
+ border-bottom: 1px solid var(--border);
27
+ }
28
+ .docs__title {
29
+ font-size: var(--font-size-5xl);
30
+ font-weight: var(--font-weight-bold);
31
+ color: var(--text);
32
+ margin: 0 0 var(--spacing-4) 0;
33
+ line-height: var(--line-height-tight);
34
+ }
35
+ .docs__description {
36
+ font-size: var(--font-size-xl);
37
+ color: var(--text);
38
+ margin: 0;
39
+ line-height: var(--line-height-relaxed);
40
+ }
12
41
  .docs__content {
13
42
  width: 100%;
14
43
  min-width: 0;
15
44
  color: var(--text);
16
45
  line-height: var(--line-height-relaxed);
17
46
  }
47
+ .docs__content h2,
48
+ .docs__content h3 {
49
+ scroll-margin-top: var(--scroll-margin-below-header);
50
+ }
51
+ .docs__content h2 {
52
+ font-size: var(--font-size-4xl);
53
+ font-weight: var(--font-weight-bold);
54
+ margin-top: var(--section-spacing-lg);
55
+ margin-bottom: var(--spacing-6);
56
+ color: var(--text);
57
+ padding-bottom: var(--spacing-2);
58
+ border-bottom: 1px solid var(--border);
59
+ }
60
+ .docs__content h3 {
61
+ font-size: var(--font-size-3xl);
62
+ font-weight: var(--font-weight-semibold);
63
+ margin-top: var(--spacing-8);
64
+ margin-bottom: var(--spacing-4);
65
+ color: var(--text);
66
+ }
67
+ .docs__content h4 {
68
+ font-size: var(--font-size-2xl);
69
+ font-weight: var(--font-weight-semibold);
70
+ margin-top: var(--spacing-6);
71
+ margin-bottom: var(--spacing-3);
72
+ color: var(--text);
73
+ }
74
+ .docs__content p {
75
+ font-size: var(--font-size-base);
76
+ margin-bottom: var(--spacing-5);
77
+ }
78
+ .docs__content ul,
79
+ .docs__content ol {
80
+ margin-bottom: var(--spacing-5);
81
+ padding-left: var(--spacing-8);
82
+ }
83
+ .docs__content li {
84
+ margin-bottom: var(--spacing-2);
85
+ }
86
+ .docs__content blockquote {
87
+ border-left: var(--spacing-1) solid var(--accent);
88
+ padding-left: var(--spacing-6);
89
+ margin: var(--spacing-6) 0;
90
+ color: var(--text-dim);
91
+ font-style: italic;
92
+ }
93
+ .docs__content table {
94
+ width: 100%;
95
+ border-collapse: collapse;
96
+ margin-bottom: var(--spacing-6);
97
+ }
98
+ .docs__content th,
99
+ .docs__content td {
100
+ padding: var(--spacing-3);
101
+ text-align: left;
102
+ border-bottom: 1px solid var(--border);
103
+ }
104
+ .docs__content th {
105
+ font-weight: var(--font-weight-semibold);
106
+ background-color: var(--background-alt);
107
+ }
108
+ .docs__content a:not(.docs-sidebar__link):not(.docs-sidebar__sublink):not(.component-card-link):not(.block-card-link) {
109
+ color: var(--accent-fg);
110
+ text-decoration: underline;
111
+ text-underline-offset: 0.15em;
112
+ }
113
+ .docs__content a:not(.docs-sidebar__link):not(.docs-sidebar__sublink):not(.component-card-link):not(.block-card-link):hover {
114
+ color: var(--accent-fg-hover);
115
+ }
116
+ .docs__content hr {
117
+ border: none;
118
+ border-top: 1px solid var(--border);
119
+ margin: var(--spacing-8) 0;
120
+ }
121
+ .docs__content .example {
122
+ background-color: var(--background-alt);
123
+ border: 1px solid var(--border);
124
+ border-radius: var(--radius-lg);
125
+ padding: var(--spacing-6);
126
+ margin: var(--spacing-6) 0;
127
+ }
128
+ .docs__content section {
129
+ margin-bottom: var(--section-spacing-lg);
130
+ }
131
+ .docs__content section:last-child {
132
+ margin-bottom: 0;
133
+ }
134
+ @media (width <= 640px) {
135
+ .docs__title {
136
+ font-size: var(--font-size-4xl);
137
+ }
138
+ .docs__description {
139
+ font-size: var(--font-size-lg);
140
+ }
141
+ }
18
142
 
19
143
  .home__container { width: 100%; max-width: var(--container-default); margin: 0 auto; padding: 0 var(--content-padding-x); }
20
144
  .home__hero { text-align: center; padding: var(--spacing-10) 0; }
@@ -1,9 +1,29 @@
1
- import { useEffect } from 'react';
1
+ import { useEffect, useMemo } from 'react';
2
2
  import { Outlet, useLocation } from 'react-router-dom';
3
3
  import DocsSidebar from '@/components/rizzo/DocsSidebar';
4
4
  import BackToTop from '@/components/rizzo/BackToTop';
5
5
  import { DOCS_NAV } from '@/config/docsNav';
6
6
 
7
+ const DOCS_PAGE_META: Record<string, { title: string; description: string }> = {
8
+ '/docs': {
9
+ title: 'Docs overview',
10
+ description:
11
+ 'Rizzo CSS is a design system built on semantic theming and 14 themes. One CSS codebase, 53 accessible BEM components — for Vanilla JS, Astro, Svelte, React, and Vue.',
12
+ },
13
+ '/docs/overview': {
14
+ title: 'Overview',
15
+ description: 'Introduction to Rizzo CSS and the design system',
16
+ },
17
+ '/docs/getting-started': {
18
+ title: 'Getting Started',
19
+ description: 'Installation, project structure, and quick start guide',
20
+ },
21
+ '/docs/components': {
22
+ title: 'Components',
23
+ description: 'Browse all components by category',
24
+ },
25
+ };
26
+
7
27
  function openSidebar() {
8
28
  const docs = document.querySelector('[data-docs]');
9
29
  const toggle = document.querySelector('[data-docs-sidebar-toggle]');
@@ -31,6 +51,10 @@ function toggleSidebar() {
31
51
  export default function DocsLayout() {
32
52
  const location = useLocation();
33
53
  const currentPath = location.pathname;
54
+ const { title, description } = useMemo(() => {
55
+ const meta = DOCS_PAGE_META[currentPath.replace(/\/$/, '') || '/docs'];
56
+ return meta ?? { title: 'Docs', description: '' };
57
+ }, [currentPath]);
34
58
 
35
59
  useEffect(() => {
36
60
  const w = typeof window !== 'undefined' ? window.innerWidth : 1025;
@@ -62,28 +86,34 @@ export default function DocsLayout() {
62
86
 
63
87
  return (
64
88
  <div className="docs" data-docs>
65
- <div id="docs-sidebar-container">
66
- <button
67
- type="button"
68
- className="docs__sidebar-toggle"
69
- aria-label="Open documentation menu"
70
- aria-expanded={false}
71
- aria-controls="docs-sidebar"
72
- data-docs-sidebar-toggle
73
- onClick={toggleSidebar}
74
- >
75
- <span className="docs__sidebar-toggle-icon" aria-hidden="true">
76
- <span></span><span></span><span></span>
77
- </span>
78
- <span className="docs__sidebar-toggle-text">Docs</span>
79
- </button>
80
- <div className="docs__sidebar-overlay" data-docs-sidebar-overlay aria-hidden="true" onClick={closeSidebar} role="presentation" />
81
- <DocsSidebar currentPath={currentPath} pathPrefix="/docs" nav={DOCS_NAV} />
82
- </div>
83
- <div className="docs__main">
84
- <div className="docs__container">
85
- <div className="docs__content">
86
- <Outlet />
89
+ <div className="docs__outer">
90
+ <div id="docs-sidebar-container">
91
+ <button
92
+ type="button"
93
+ className="docs__sidebar-toggle"
94
+ aria-label="Open documentation menu"
95
+ aria-expanded={false}
96
+ aria-controls="docs-sidebar"
97
+ data-docs-sidebar-toggle
98
+ onClick={toggleSidebar}
99
+ >
100
+ <span className="docs__sidebar-toggle-icon" aria-hidden="true">
101
+ <span></span><span></span><span></span>
102
+ </span>
103
+ <span className="docs__sidebar-toggle-text">Docs</span>
104
+ </button>
105
+ <div className="docs__sidebar-overlay" data-docs-sidebar-overlay aria-hidden="true" onClick={closeSidebar} role="presentation" />
106
+ <DocsSidebar currentPath={currentPath} pathPrefix="/docs" nav={DOCS_NAV} />
107
+ </div>
108
+ <div className="docs__main">
109
+ <div className="docs__container">
110
+ <header className="docs__header">
111
+ <h1 className="docs__title">{title}</h1>
112
+ {description ? <p className="docs__description">{description}</p> : null}
113
+ </header>
114
+ <div className="docs__content">
115
+ <Outlet />
116
+ </div>
87
117
  </div>
88
118
  </div>
89
119
  </div>
@@ -9,7 +9,6 @@ export default function DocsComponents() {
9
9
  return (
10
10
  <div>
11
11
  <section className="docs-components-intro">
12
- <h1 className="docs__title">Components</h1>
13
12
  <p className="docs-components-intro__tagline">
14
13
  Browse the collection of accessible, themeable components. Same CSS and BEM for Astro, Svelte, React, and Vanilla.
15
14
  </p>
@@ -3,7 +3,6 @@ import { Link } from 'react-router-dom';
3
3
  export default function DocsGettingStarted() {
4
4
  return (
5
5
  <div>
6
- <h1 className="docs__title">Getting started</h1>
7
6
  <p>This project was created with the <strong>Full</strong> template. You have the home page, docs overview, components index, blocks, and themes.</p>
8
7
 
9
8
  <h2 id="installation">Installation</h2>
@@ -3,7 +3,6 @@ import { Link } from 'react-router-dom';
3
3
  export default function DocsIndex() {
4
4
  return (
5
5
  <section className="docs-overview">
6
- <h1 className="docs__title">Docs overview</h1>
7
6
  <p className="docs-overview__intro">
8
7
  Rizzo CSS is a design system built on semantic theming and 14 themes. One CSS codebase, 58 accessible BEM components — for <strong>Vanilla JS</strong>, <strong>Astro</strong>, <strong>Svelte</strong>, <strong>React</strong>, and <strong>Vue</strong>.
9
8
  </p>
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
2
+ <g>
3
+ <path d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7ZM16 82.4s16.5-8 33-8l12.4-38.3c.5-2 1.8-3.2 3.3-3.2 1.6 0 3 1.3 3.4 3.2l12.4 38.3c19.6 0 33 8 33 8l-28-76c-.8-2.3-2.2-3.7-4-3.7H48c-1.8 0-3.1 1.4-4 3.7l-28 76Z"/>
4
+ </g>
5
+ <path fill="url(#a)" d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7Z"/>
6
+ <defs>
7
+ <linearGradient id="a" x1="64.7" x2="77.4" y1="119.2" y2="77.4" gradientUnits="userSpaceOnUse">
8
+ <stop stop-color="#D83333"/>
9
+ <stop offset="1" stop-color="#F041FF"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <style>
13
+ g { fill: #000; }
14
+ @media (prefers-color-scheme: dark) {
15
+ g { fill: #FFF; }
16
+ }
17
+ </style>
18
+ </svg>
@@ -7,6 +7,7 @@
7
7
  (function(){try{var s=localStorage.getItem('theme');var d='{{DEFAULT_DARK}}';var l='{{DEFAULT_LIGHT}}';var initial=document.documentElement.getAttribute('data-theme');var r=!s?((initial&&initial!=='system')?initial:(matchMedia('(prefers-color-scheme: dark)').matches?d:l)):s==='system'?(matchMedia('(prefers-color-scheme: dark)').matches?d:l):s;document.documentElement.setAttribute('data-theme',r);}catch(e){}})();
8
8
  </script>
9
9
  <link rel="stylesheet" href="/css/rizzo.min.css" />
10
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
10
11
  {{RIZZO_SOUND_SCRIPT}}
11
12
  %sveltekit.head%
12
13
  </head>
@@ -14,6 +14,15 @@
14
14
 
15
15
  <Navbar siteName="Site" {menuLinks} />
16
16
  <slot />
17
- <Footer siteName="Site" links={[{ href: 'https://github.com', label: 'GitHub' }, { href: 'https://linkedin.com', label: 'LinkedIn' }]} />
17
+ <Footer
18
+ siteName="Site"
19
+ links={[
20
+ { href: '/#about', label: 'About' },
21
+ { href: '/#contact', label: 'Contact' },
22
+ { href: '/docs', label: 'Docs' },
23
+ { href: 'https://github.com', label: 'GitHub' },
24
+ { href: 'https://twitter.com', label: 'Twitter' },
25
+ ]}
26
+ />
18
27
  <BackToTop />
19
28
  <Settings />
@@ -0,0 +1,18 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
2
+ <g>
3
+ <path d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7ZM16 82.4s16.5-8 33-8l12.4-38.3c.5-2 1.8-3.2 3.3-3.2 1.6 0 3 1.3 3.4 3.2l12.4 38.3c19.6 0 33 8 33 8l-28-76c-.8-2.3-2.2-3.7-4-3.7H48c-1.8 0-3.1 1.4-4 3.7l-28 76Z"/>
4
+ </g>
5
+ <path fill="url(#a)" d="M47.7 107.1c-5.5-5-7.2-15.7-4.9-23.4 4 4.9 9.6 6.4 15.4 7.3 8.9 1.3 17.6.8 25.9-3.2l2.8-1.7a18 18 0 0 1-7.2 20l-5.5 3.8c-5.6 3.8-7.2 8.2-5 14.7l.2.7a14 14 0 0 1-6.6-5.6 15.8 15.8 0 0 1-2.6-8.6c0-1.5 0-3-.2-4.5-.5-3.7-2.2-5.3-5.5-5.4-3.3-.1-5.9 2-6.6 5.2l-.2.7Z"/>
6
+ <defs>
7
+ <linearGradient id="a" x1="64.7" x2="77.4" y1="119.2" y2="77.4" gradientUnits="userSpaceOnUse">
8
+ <stop stop-color="#D83333"/>
9
+ <stop offset="1" stop-color="#F041FF"/>
10
+ </linearGradient>
11
+ </defs>
12
+ <style>
13
+ g { fill: #000; }
14
+ @media (prefers-color-scheme: dark) {
15
+ g { fill: #FFF; }
16
+ }
17
+ </style>
18
+ </svg>
@@ -7,6 +7,7 @@
7
7
  (function(){try{var s=localStorage.getItem('theme');var d='{{DEFAULT_DARK}}';var l='{{DEFAULT_LIGHT}}';var initial=document.documentElement.getAttribute('data-theme');var r=!s?((initial&&initial!=='system')?initial:(matchMedia('(prefers-color-scheme: dark)').matches?d:l)):s==='system'?(matchMedia('(prefers-color-scheme: dark)').matches?d:l):s;document.documentElement.setAttribute('data-theme',r);}catch(e){}})();
8
8
  </script>
9
9
  <link rel="stylesheet" href="/css/rizzo.min.css" />
10
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
10
11
  {{RIZZO_SOUND_SCRIPT}}
11
12
  %sveltekit.head%
12
13
  </head>