rizzo-css 0.0.75 → 0.0.77

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 (130) hide show
  1. package/README.md +1 -1
  2. package/dist/rizzo.min.css +1 -1
  3. package/package.json +1 -1
  4. package/scaffold/astro/Footer.astro +1 -1
  5. package/scaffold/landing/index.html +27 -2
  6. package/scaffold/react/base/package.json +1 -1
  7. package/scaffold/svelte/Button.svelte +5 -1
  8. package/scaffold/svelte/Navbar.svelte +10 -2
  9. package/scaffold/svelte/base/src/routes/+layout.svelte +18 -0
  10. package/scaffold/svelte/base/src/routes/+page.svelte +158 -87
  11. package/scaffold/svelte/index.ts +1 -0
  12. package/scaffold/svelte/variants/full/src/routes/+layout.svelte +2 -0
  13. package/scaffold/vanilla/README-RIZZO.md +1 -1
  14. package/scaffold/vanilla/components/accordion.html +6 -0
  15. package/scaffold/vanilla/components/alert-dialog.html +6 -0
  16. package/scaffold/vanilla/components/alert.html +6 -0
  17. package/scaffold/vanilla/components/aspect-ratio.html +6 -0
  18. package/scaffold/vanilla/components/avatar.html +6 -0
  19. package/scaffold/vanilla/components/back-to-top.html +6 -0
  20. package/scaffold/vanilla/components/badge.html +6 -0
  21. package/scaffold/vanilla/components/breadcrumb.html +6 -0
  22. package/scaffold/vanilla/components/button-group.html +6 -0
  23. package/scaffold/vanilla/components/button.html +6 -0
  24. package/scaffold/vanilla/components/calendar.html +6 -0
  25. package/scaffold/vanilla/components/cards.html +6 -0
  26. package/scaffold/vanilla/components/carousel.html +6 -0
  27. package/scaffold/vanilla/components/chart.html +6 -0
  28. package/scaffold/vanilla/components/collapsible.html +6 -0
  29. package/scaffold/vanilla/components/command.html +6 -0
  30. package/scaffold/vanilla/components/context-menu.html +6 -0
  31. package/scaffold/vanilla/components/copy-to-clipboard.html +6 -0
  32. package/scaffold/vanilla/components/dashboard.html +6 -0
  33. package/scaffold/vanilla/components/direction.html +6 -0
  34. package/scaffold/vanilla/components/divider.html +6 -0
  35. package/scaffold/vanilla/components/docs-sidebar.html +6 -0
  36. package/scaffold/vanilla/components/dropdown.html +6 -0
  37. package/scaffold/vanilla/components/empty.html +6 -0
  38. package/scaffold/vanilla/components/font-switcher.html +6 -0
  39. package/scaffold/vanilla/components/footer.html +6 -0
  40. package/scaffold/vanilla/components/forms.html +6 -0
  41. package/scaffold/vanilla/components/hover-card.html +6 -0
  42. package/scaffold/vanilla/components/icons.html +6 -0
  43. package/scaffold/vanilla/components/index.html +6 -0
  44. package/scaffold/vanilla/components/input-group.html +6 -0
  45. package/scaffold/vanilla/components/input-otp.html +6 -0
  46. package/scaffold/vanilla/components/kbd.html +6 -0
  47. package/scaffold/vanilla/components/label.html +6 -0
  48. package/scaffold/vanilla/components/menubar.html +6 -0
  49. package/scaffold/vanilla/components/modal.html +6 -0
  50. package/scaffold/vanilla/components/navbar.html +6 -0
  51. package/scaffold/vanilla/components/pagination.html +6 -0
  52. package/scaffold/vanilla/components/popover.html +6 -0
  53. package/scaffold/vanilla/components/progress-bar.html +6 -0
  54. package/scaffold/vanilla/components/range-calendar.html +6 -0
  55. package/scaffold/vanilla/components/resizable.html +6 -0
  56. package/scaffold/vanilla/components/scroll-area.html +6 -0
  57. package/scaffold/vanilla/components/search.html +6 -0
  58. package/scaffold/vanilla/components/separator.html +6 -0
  59. package/scaffold/vanilla/components/settings.html +6 -0
  60. package/scaffold/vanilla/components/sheet.html +6 -0
  61. package/scaffold/vanilla/components/skeleton.html +6 -0
  62. package/scaffold/vanilla/components/slider.html +6 -0
  63. package/scaffold/vanilla/components/sound-effects.html +6 -0
  64. package/scaffold/vanilla/components/spinner.html +6 -0
  65. package/scaffold/vanilla/components/switch.html +6 -0
  66. package/scaffold/vanilla/components/table.html +6 -0
  67. package/scaffold/vanilla/components/tabs.html +6 -0
  68. package/scaffold/vanilla/components/theme-switcher.html +6 -0
  69. package/scaffold/vanilla/components/toast.html +6 -0
  70. package/scaffold/vanilla/components/toggle-group.html +6 -0
  71. package/scaffold/vanilla/components/toggle.html +6 -0
  72. package/scaffold/vanilla/components/tooltip.html +6 -0
  73. package/scaffold/vanilla/index.html +6 -0
  74. package/scaffold/vue/Accordion.vue +1 -1
  75. package/scaffold/vue/Alert.vue +1 -1
  76. package/scaffold/vue/AlertDialog.vue +1 -1
  77. package/scaffold/vue/AspectRatio.vue +1 -1
  78. package/scaffold/vue/Avatar.vue +1 -1
  79. package/scaffold/vue/BackToTop.vue +1 -1
  80. package/scaffold/vue/Badge.vue +6 -12
  81. package/scaffold/vue/Breadcrumb.vue +1 -1
  82. package/scaffold/vue/Button.vue +6 -11
  83. package/scaffold/vue/ButtonGroup.vue +1 -1
  84. package/scaffold/vue/Card.vue +4 -7
  85. package/scaffold/vue/Checkbox.vue +12 -12
  86. package/scaffold/vue/Collapsible.vue +1 -1
  87. package/scaffold/vue/ContextMenu.vue +1 -1
  88. package/scaffold/vue/CopyToClipboard.vue +1 -1
  89. package/scaffold/vue/Dashboard.vue +1 -1
  90. package/scaffold/vue/Divider.vue +5 -8
  91. package/scaffold/vue/DocsSidebar.vue +1 -1
  92. package/scaffold/vue/Dropdown.vue +1 -1
  93. package/scaffold/vue/Empty.vue +1 -1
  94. package/scaffold/vue/FontSwitcher.vue +1 -1
  95. package/scaffold/vue/Footer.vue +1 -1
  96. package/scaffold/vue/FormGroup.vue +9 -12
  97. package/scaffold/vue/HoverCard.vue +1 -1
  98. package/scaffold/vue/Icons.vue +1 -1
  99. package/scaffold/vue/Input.vue +17 -30
  100. package/scaffold/vue/Kbd.vue +1 -1
  101. package/scaffold/vue/Label.vue +5 -8
  102. package/scaffold/vue/Modal.vue +1 -1
  103. package/scaffold/vue/Navbar.vue +1 -1
  104. package/scaffold/vue/Pagination.vue +1 -1
  105. package/scaffold/vue/Popover.vue +1 -1
  106. package/scaffold/vue/ProgressBar.vue +1 -1
  107. package/scaffold/vue/Radio.vue +10 -13
  108. package/scaffold/vue/ResizableHandle.vue +1 -1
  109. package/scaffold/vue/ResizablePane.vue +1 -1
  110. package/scaffold/vue/ResizablePaneGroup.vue +1 -1
  111. package/scaffold/vue/ScrollArea.vue +1 -1
  112. package/scaffold/vue/Search.vue +1 -1
  113. package/scaffold/vue/Select.vue +14 -25
  114. package/scaffold/vue/Separator.vue +1 -1
  115. package/scaffold/vue/Settings.vue +1 -1
  116. package/scaffold/vue/Sheet.vue +1 -1
  117. package/scaffold/vue/Skeleton.vue +1 -1
  118. package/scaffold/vue/Slider.vue +1 -1
  119. package/scaffold/vue/SoundEffects.vue +1 -1
  120. package/scaffold/vue/Spinner.vue +6 -9
  121. package/scaffold/vue/Switch.vue +1 -1
  122. package/scaffold/vue/Table.vue +1 -1
  123. package/scaffold/vue/Tabs.vue +1 -1
  124. package/scaffold/vue/Textarea.vue +18 -31
  125. package/scaffold/vue/ThemeSwitcher.vue +1 -1
  126. package/scaffold/vue/Toast.vue +1 -1
  127. package/scaffold/vue/Toggle.vue +1 -1
  128. package/scaffold/vue/ToggleGroup.vue +1 -1
  129. package/scaffold/vue/Tooltip.vue +1 -1
  130. package/scaffold/vue/base/package.json +1 -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.75 or any version) -->
75
+ <!-- unpkg (pin version: replace @latest with @0.0.77 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 -->
@@ -239,7 +239,7 @@ div.navbar__link{background:none;border:none;color:inherit;cursor:pointer;font:i
239
239
  #themes-preview .themes-page__preview-dropdown-menu .dropdown__item:focus-visible:not(.dropdown__item--disabled) span,#themes-preview .themes-page__preview-dropdown-menu .dropdown__item:hover:not(.dropdown__item--disabled) span,
240
240
  #themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"] span,
241
241
  #themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"]:focus-visible span,
242
- #themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"]:hover span{color:var(--accent)!important}.block-preview-wrapper{border:1px solid var(--border);border-radius:var(--radius-lg);margin:var(--spacing-6) 0;overflow:hidden}.block-preview-wrapper--hero{background:var(--background-alt);padding:var(--spacing-16) var(--spacing-6);text-align:center}.block-preview-wrapper--pricing{background:var(--background-alt);padding:var(--spacing-6)}.block-preview-wrapper--docs{min-height:16rem}.block-preview-wrapper--dashboard{min-height:24rem}.docs-dim{color:var(--text-dim);font-size:var(--font-size-sm);margin-top:0}.landing-hero__title{color:var(--text);font-size:var(--font-size-4xl);font-weight:var(--font-weight-extrabold);line-height:var(--line-height-tight);margin:0 0 var(--spacing-4)}.landing-hero__subtitle{color:var(--text-dim);font-size:var(--font-size-xl);line-height:var(--line-height-relaxed);margin:0 auto var(--spacing-8);max-width:var(--spacing-175)}.landing-hero__ctas{display:flex;flex-wrap:wrap;gap:var(--spacing-3);justify-content:center}.pricing-grid{display:grid;gap:var(--spacing-6);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:0 auto;max-width:56rem}.pricing-card{display:flex;flex-direction:column}.pricing-card .card__body{display:flex;flex:1;flex-direction:column}.pricing-card--featured{border-color:var(--accent);box-shadow:0 0 0 2px oklch(from var(--accent) l c h/20%)}.pricing-card__badge{align-self:flex-start;margin-bottom:var(--spacing-2)}.pricing-card__name{color:var(--text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-2)}.pricing-card__price{color:var(--text);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-0-5)}.pricing-card__currency,
242
+ #themes-preview .themes-page__preview-dropdown-menu .dropdown__item[aria-current="true"]:hover span{color:var(--accent)!important}.block-preview-wrapper{border:1px solid var(--border);border-radius:var(--radius-lg);margin:var(--spacing-6) 0;overflow:hidden}.block-preview-wrapper--hero{background:var(--background-alt);padding:0}.block-preview-wrapper--pricing{background:var(--background-alt);padding:var(--spacing-6)}.block-preview-wrapper--docs{min-height:16rem}.block-preview-wrapper--dashboard{min-height:24rem}.docs-dim{color:var(--text-dim);font-size:var(--font-size-sm);margin-top:0}.landing-hero{align-items:center;background:var(--background-alt);box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;min-height:28rem;padding:var(--spacing-20) var(--spacing-6);text-align:center}.landing-hero__title{color:var(--text);font-size:var(--font-size-4xl);font-weight:var(--font-weight-extrabold);line-height:var(--line-height-tight);margin:0 0 var(--spacing-4)}@media (width >= 48rem){.landing-hero__title{font-size:var(--font-size-5xl)}}.landing-hero__subtitle{color:var(--text-dim);font-size:var(--font-size-xl);line-height:var(--line-height-relaxed);margin:0 auto var(--spacing-8);max-width:var(--spacing-175)}.landing-hero__ctas{display:flex;flex-wrap:wrap;gap:var(--spacing-3);justify-content:center}.landing-features{box-sizing:border-box;margin:0 auto;max-width:var(--container-default);padding:var(--spacing-16) var(--spacing-6);width:100%}.landing-features__title{color:var(--text);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-8);text-align:center}.landing-features__grid{display:grid;gap:var(--spacing-8);grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));list-style:none;margin:0;padding:0}.landing-features__item{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-6);transition:border-color var(--transition-base),box-shadow var(--transition-base)}.landing-features__item:hover{border-color:var(--accent);box-shadow:0 0 0 1px oklch(from var(--accent) l c h/15%)}.landing-features__item-title{color:var(--text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-2)}.landing-features__item-desc{color:var(--text-dim);font-size:var(--font-size-base);line-height:var(--line-height-relaxed);margin:0}.pricing-grid{display:grid;gap:var(--spacing-6);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:0 auto;max-width:56rem}.pricing-card{display:flex;flex-direction:column}.pricing-card .card__body{display:flex;flex:1;flex-direction:column}.pricing-card--featured{border-color:var(--accent);box-shadow:0 0 0 2px oklch(from var(--accent) l c h/20%)}.pricing-card__badge{align-self:flex-start;margin-bottom:var(--spacing-2)}.pricing-card__name{color:var(--text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-2)}.pricing-card__price{color:var(--text);font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-0-5)}.pricing-card__currency,
243
243
  .pricing-card__period-inline{color:var(--text-dim);font-size:var(--font-size-lg);font-weight:var(--font-weight-normal)}.pricing-card__period{color:var(--text-dim);font-size:var(--font-size-sm);margin:0 0 var(--spacing-4)}.pricing-card__features{color:var(--text);flex:1;font-size:var(--font-size-sm);list-style:none;margin:0 0 var(--spacing-6);padding:0}.pricing-card__features li{padding:var(--spacing-1) 0;padding-left:var(--spacing-4);position:relative}.pricing-card__features li::before{background:var(--accent);border-radius:50%;content:"";height:.35em;left:0;position:absolute;top:.65em;width:.35em}.pricing-card__cta{justify-content:center;width:100%}.dashboard-page__header{margin-bottom:var(--spacing-6)}.dashboard-page__title{color:var(--text);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-1)}.dashboard-page__subtitle{color:var(--text-dim);font-size:var(--font-size-sm);margin:0}.dashboard-page__stats-grid{display:grid;gap:var(--spacing-4);grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));margin-bottom:var(--spacing-8)}.dashboard-page__stat .card__body{display:flex;flex-direction:column;gap:var(--spacing-1)}.dashboard-page__stat .card__label{color:var(--text-dim);font-size:var(--font-size-sm)}.dashboard-page__stat .card__value{color:var(--text);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.dashboard-page__section-title{color:var(--text);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin:0 0 var(--spacing-4)}.docs-layout-demo{display:flex;min-height:16rem}.docs-layout-demo__sidebar{background:var(--background-alt);border-right:1px solid var(--border);flex-shrink:0;padding:var(--spacing-4);width:12rem}.docs-layout-demo__nav{display:flex;flex-direction:column;gap:var(--spacing-1)}.docs-layout-demo__nav-link{border-radius:var(--radius-md);color:var(--text);display:block;font-size:var(--font-size-sm);padding:var(--spacing-2) var(--spacing-3);text-decoration:none}.docs-layout-demo__nav-link:hover{background:var(--background)}.docs-layout-demo__nav-link--active{background:var(--accent);color:var(--accent-text)}.docs-layout-demo__main{flex:1;overflow:auto;padding:var(--spacing-6)}.docs-layout-demo__header{margin-bottom:var(--spacing-4)}.docs-layout-demo__title{color:var(--text);font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);margin:0 0 var(--spacing-1)}.docs-layout-demo__desc{color:var(--text-dim);margin:0}.docs-layout-demo__content{margin-top:var(--spacing-4)}.block-preview-wrapper--login,
244
244
  .block-preview-wrapper--signup{align-items:center;background:var(--background-alt);display:flex;justify-content:center;min-height:20rem;padding:var(--spacing-16) var(--spacing-6)}.login-block,
245
245
  .signup-block{display:flex;flex-direction:column;gap:var(--spacing-6);max-width:24rem;width:100%}.login-block__brand,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rizzo-css",
3
- "version": "0.0.75",
3
+ "version": "0.0.77",
4
4
  "engines": {
5
5
  "node": ">=18"
6
6
  },
@@ -13,7 +13,7 @@ interface Props {
13
13
  links?: FooterLink[];
14
14
  /** Optional class for the root element */
15
15
  class?: string;
16
- /** Optional version string (e.g. from package.json); shown as "v0.0.75" with link to CHANGELOG */
16
+ /** Optional version string (e.g. from package.json); shown as "v0.0.76" with link to CHANGELOG */
17
17
  version?: string;
18
18
  }
19
19
 
@@ -7,7 +7,32 @@
7
7
  <link rel="stylesheet" href="{{LINK_HREF}}" />
8
8
  </head>
9
9
  <body>
10
- <h1>Hello, Rizzo CSS</h1>
11
- <p>Edit this file and add components. Docs: <a href="https://rizzo-css.vercel.app">rizzo-css.vercel.app</a></p>
10
+ <main>
11
+ <header class="landing-hero">
12
+ <h1 class="landing-hero__title">Build something great</h1>
13
+ <p class="landing-hero__subtitle">A themeable, accessible design system. Same CSS across frameworks. Edit this page and add your own content.</p>
14
+ <div class="landing-hero__ctas">
15
+ <a href="https://rizzo-css.vercel.app/docs/getting-started" class="btn btn-primary">Get started</a>
16
+ <a href="https://rizzo-css.vercel.app/docs/components" class="btn btn-outline">View components</a>
17
+ </div>
18
+ </header>
19
+ <section class="landing-features" aria-labelledby="features-heading">
20
+ <h2 id="features-heading" class="landing-features__title">Why use Rizzo CSS</h2>
21
+ <ul class="landing-features__grid">
22
+ <li class="landing-features__item">
23
+ <h3 class="landing-features__item-title">Framework-agnostic</h3>
24
+ <p class="landing-features__item-desc">One design system for Vanilla, Astro, Svelte, React, and Vue. Same BEM classes and tokens everywhere.</p>
25
+ </li>
26
+ <li class="landing-features__item">
27
+ <h3 class="landing-features__item-title">Accessible by default</h3>
28
+ <p class="landing-features__item-desc">Components follow WCAG guidance: focus, ARIA, keyboard nav, and reduced motion built in.</p>
29
+ </li>
30
+ <li class="landing-features__item">
31
+ <h3 class="landing-features__item-title">Themable</h3>
32
+ <p class="landing-features__item-desc">Light, dark, and custom themes via CSS variables. No runtime lock-in.</p>
33
+ </li>
34
+ </ul>
35
+ </section>
36
+ </main>
12
37
  </body>
13
38
  </html>
@@ -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.75",
19
+ "rizzo-css": "^0.0.77",
20
20
  "typescript": "~5.6.2",
21
21
  "vite": "^6.0.1"
22
22
  }
@@ -2,8 +2,10 @@
2
2
  import type { Snippet } from 'svelte';
3
3
 
4
4
  type Variant = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'outline' | 'ghost';
5
+ type Size = 'sm' | 'md' | 'lg';
5
6
  interface Props {
6
7
  variant?: Variant;
8
+ size?: Size;
7
9
  disabled?: boolean;
8
10
  type?: 'button' | 'submit' | 'reset';
9
11
  class?: string;
@@ -11,6 +13,7 @@
11
13
  }
12
14
  let {
13
15
  variant = 'default',
16
+ size = 'md',
14
17
  disabled = false,
15
18
  type = 'button',
16
19
  class: className = '',
@@ -19,7 +22,8 @@
19
22
  }: Props = $props();
20
23
 
21
24
  const variantClass = $derived(variant === 'default' ? '' : `btn-${variant}`);
22
- const classes = $derived(['btn', variantClass, className].filter(Boolean).join(' '));
25
+ const sizeClass = $derived(size !== 'md' ? `btn--${size}` : '');
26
+ const classes = $derived(['btn', variantClass, sizeClass, className].filter(Boolean).join(' '));
23
27
  </script>
24
28
 
25
29
  <button {type} {disabled} class={classes} {...rest}>
@@ -3,19 +3,27 @@
3
3
  import Gear from './icons/Gear.svelte';
4
4
  import Search from './Search.svelte';
5
5
 
6
+ export interface NavbarLink {
7
+ href: string;
8
+ label: string;
9
+ }
10
+
6
11
  interface Props {
7
12
  siteName?: string;
8
13
  logo?: string;
14
+ /** Override default nav links (e.g. for portfolio: About, Skills, Projects, Contact) */
15
+ menuLinks?: NavbarLink[];
9
16
  }
10
- let { siteName = 'Site', logo }: Props = $props();
17
+ let { siteName = 'Site', logo, menuLinks: menuLinksProp }: Props = $props();
11
18
  let menuOpen = $state(false);
12
19
 
13
- const menuLinks = [
20
+ const defaultMenuLinks: NavbarLink[] = [
14
21
  { href: '/docs', label: 'Docs' },
15
22
  { href: '/docs/components', label: 'Components' },
16
23
  { href: '/blocks', label: 'Blocks' },
17
24
  { href: '/themes', label: 'Themes' },
18
25
  ];
26
+ const menuLinks = $derived(menuLinksProp ?? defaultMenuLinks);
19
27
 
20
28
  // Click outside and Escape to close mobile menu
21
29
  $effect(() => {
@@ -1 +1,19 @@
1
+ <script lang="ts">
2
+ import Navbar from '$lib/rizzo/Navbar.svelte';
3
+ import Footer from '$lib/rizzo/Footer.svelte';
4
+ import Settings from '$lib/rizzo/Settings.svelte';
5
+ import BackToTop from '$lib/rizzo/BackToTop.svelte';
6
+
7
+ const menuLinks = [
8
+ { href: '/#about', label: 'About' },
9
+ { href: '/#skills', label: 'Skills' },
10
+ { href: '/#projects', label: 'Projects' },
11
+ { href: '/#contact', label: 'Contact' },
12
+ ];
13
+ </script>
14
+
15
+ <Navbar siteName="Site" {menuLinks} />
1
16
  <slot />
17
+ <Footer siteName="Site" links={[{ href: 'https://github.com', label: 'GitHub' }, { href: 'https://linkedin.com', label: 'LinkedIn' }]} />
18
+ <BackToTop />
19
+ <Settings />
@@ -1,105 +1,176 @@
1
1
  <script lang="ts">
2
- import CopyToClipboard from '$lib/rizzo/CopyToClipboard.svelte';
3
- const DOCS_BASE = 'https://rizzo-css.vercel.app';
4
- const ADD_COMMAND = 'npx rizzo-css add <ComponentName>';
2
+ import Card from '$lib/rizzo/Card.svelte';
3
+ import Badge from '$lib/rizzo/Badge.svelte';
4
+ import Button from '$lib/rizzo/Button.svelte';
5
+
6
+ const skills = [
7
+ { name: 'Skill one' },
8
+ { name: 'Skill two' },
9
+ { name: 'Skill three' },
10
+ { name: 'Skill four' },
11
+ { name: 'Skill five' },
12
+ ];
13
+
14
+ const projects = [
15
+ {
16
+ title: 'Project one',
17
+ description: 'Short description placeholder. Replace with your project summary and tech stack.',
18
+ tags: ['Tag A', 'Tag B', 'Tag C'],
19
+ href: '#',
20
+ },
21
+ {
22
+ title: 'Project two',
23
+ description: 'Short description placeholder. Replace with your project summary and tech stack.',
24
+ tags: ['Tag A', 'Tag B'],
25
+ href: '#',
26
+ },
27
+ {
28
+ title: 'Project three',
29
+ description: 'Short description placeholder. Replace with your project summary and tech stack.',
30
+ tags: ['Tag A', 'Tag B', 'Tag C'],
31
+ href: '#',
32
+ },
33
+ ];
5
34
  </script>
6
35
 
7
36
  <a href="#main-content" class="skip-link">Skip to main content</a>
8
- <main id="main-content" class="home">
37
+ <main id="main-content" class="home portfolio">
9
38
  <div class="home__container">
10
- <header class="home__hero">
11
- <h1 class="home__title">Rizzo CSS</h1>
12
- <p class="home__subtitle">A modern CSS design system with semantic theming, accessibility-first components, and one CLI for Vanilla, Astro, and Svelte. Start here then make it your own.</p>
13
- <div class="home__hero-ctas">
14
- <a href={DOCS_BASE + '/docs/getting-started'} class="btn btn-primary home__hero-cta" target="_blank" rel="noopener noreferrer">Get Started<span class="sr-only"> (opens in new tab)</span></a>
15
- <a href={DOCS_BASE + '/docs/components'} class="btn btn-outline home__hero-cta" target="_blank" rel="noopener noreferrer">View Components<span class="sr-only"> (opens in new tab)</span></a>
39
+ <header class="home__hero portfolio__hero" id="top">
40
+ <h1 class="home__title portfolio__title">Your name</h1>
41
+ <p class="home__subtitle portfolio__subtitle">
42
+ Short tagline here. Replace with your role or focus (e.g. full stack developer, designer).
43
+ </p>
44
+ <div class="home__hero-ctas portfolio__ctas">
45
+ <a href="#projects" class="btn btn-primary home__hero-cta">View projects</a>
46
+ <a href="#contact" class="btn btn-outline home__hero-cta">Get in touch</a>
16
47
  </div>
17
48
  </header>
18
49
 
19
- <section class="home__features" aria-labelledby="home-features-heading">
20
- <h2 id="home-features-heading" class="home__section-title">Features</h2>
21
- <p class="home__features-intro">A complete design system that works across Vanilla, Astro, and Svelte — same CSS, same components, zero lock-in.</p>
22
- <div class="home__features-featured">
23
- <div class="home__card home__card--featured">
24
- <span class="home__card-icon" aria-hidden="true">Themes</span>
25
- <h3>14 beautiful themes</h3>
26
- <p>7 dark and 7 light with OKLCH for perceptual uniformity. System preference, persistence, and a unique icon per theme.</p>
27
- </div>
28
- <div class="home__card home__card--featured">
29
- <span class="home__card-icon" aria-hidden="true">A11y</span>
30
- <h3>Accessibility first</h3>
31
- <p>WCAG AA compliant with full keyboard navigation, ARIA, focus management, and screen reader support.</p>
32
- </div>
33
- <div class="home__card home__card--featured">
34
- <span class="home__card-icon" aria-hidden="true">Components</span>
35
- <h3>All components</h3>
36
- <p>Navbar, Settings, Theme Switcher, Font Switcher, Modal, Dropdown, Tabs, Forms, and more — all accessible and themeable.</p>
37
- </div>
38
- </div>
39
- <h3 class="home__features-supporting-label">And more</h3>
40
- <div class="home__grid home__grid--supporting">
41
- <div class="home__card home__card--supporting">
42
- <h3>Semantic variables</h3>
43
- <p>CSS variables that adapt to themes. No hardcoded colors; override once, update everywhere.</p>
44
- </div>
45
- <div class="home__card home__card--supporting">
46
- <h3>PostCSS powered</h3>
47
- <p>Imports, autoprefixing, and production minification. Fits into any build pipeline.</p>
48
- </div>
49
- <div class="home__card home__card--supporting">
50
- <h3>Typography & spacing</h3>
51
- <p>Scaling font sizes, weights, line heights, and a consistent spacing scale (0–24).</p>
52
- </div>
53
- <div class="home__card home__card--supporting">
54
- <h3>Responsive & utilities</h3>
55
- <p>Mobile-first breakpoints and utility classes for layout, display, and flexbox.</p>
56
- </div>
50
+ <section class="portfolio__section" id="about">
51
+ <h2 class="home__section-title">About</h2>
52
+ <p class="portfolio__about-text">
53
+ Replace with a short bio: what you do, your focus areas, and what you enjoy. Keep it to one or two
54
+ paragraphs so visitors can quickly understand your background.
55
+ </p>
56
+ </section>
57
+
58
+ <section class="portfolio__section" id="skills">
59
+ <h2 class="home__section-title">Skills & tools</h2>
60
+ <div class="portfolio__skills">
61
+ {#each skills as skill}
62
+ <div class="portfolio__skill">
63
+ <span class="portfolio__skill-name">{skill.name}</span>
64
+ </div>
65
+ {/each}
57
66
  </div>
67
+ <p class="portfolio__skills-note">Plus: add more tools or categories as needed.</p>
58
68
  </section>
59
69
 
60
- <section class="home__add-command" aria-labelledby="home-add-command-heading">
61
- <h2 id="home-add-command-heading" class="home__section-title">Add a component</h2>
62
- <p class="home__features-intro" style="margin-bottom: var(--spacing-4);">Add any component from the CLI:</p>
63
- <div class="home__add-command-block">
64
- <pre><code>npx rizzo-css add &lt;ComponentName&gt;</code></pre>
65
- <CopyToClipboard value={ADD_COMMAND} iconOnly buttonLabel="Copy" format="command" label="Copy command" class="home__add-command-copy" />
70
+ <section class="portfolio__section" id="projects">
71
+ <h2 class="home__section-title">Selected projects</h2>
72
+ <div class="home__docs-grid portfolio__projects-grid">
73
+ {#each projects as project}
74
+ <Card variant="elevated" class="portfolio__project-card">
75
+ <div class="card__header">
76
+ <h3 class="card__title">{project.title}</h3>
77
+ </div>
78
+ <div class="card__body">
79
+ <p>{project.description}</p>
80
+ <div class="portfolio__tags">
81
+ {#each project.tags as tag}
82
+ <Badge variant="primary" size="sm">{tag}</Badge>
83
+ {/each}
84
+ </div>
85
+ </div>
86
+ <div class="card__footer">
87
+ <a href={project.href} class="btn btn-outline btn--sm" target="_blank" rel="noopener noreferrer">
88
+ View project
89
+ </a>
90
+ </div>
91
+ </Card>
92
+ {/each}
66
93
  </div>
67
94
  </section>
68
95
 
69
- <section class="home__docs">
70
- <h2 class="home__section-title">Documentation</h2>
71
- <div class="home__docs-grid">
72
- <a href={DOCS_BASE + '/docs/getting-started'} class="home__doc-card" target="_blank" rel="noopener noreferrer">
73
- <h3>Getting Started</h3>
74
- <p>Installation, project structure, and quick start guide</p>
75
- <span class="sr-only"> (opens in new tab)</span>
76
- </a>
77
- <a href={DOCS_BASE + '/docs/components'} class="home__doc-card" target="_blank" rel="noopener noreferrer">
78
- <h3>Components</h3>
79
- <p>Component library with usage examples and live demos</p>
80
- <span class="sr-only"> (opens in new tab)</span>
81
- </a>
82
- <a href={DOCS_BASE + '/docs/theming'} class="home__doc-card" target="_blank" rel="noopener noreferrer">
83
- <h3>Theming</h3>
84
- <p>Theme system, custom themes, and color format guide</p>
85
- <span class="sr-only"> (opens in new tab)</span>
86
- </a>
87
- <a href={DOCS_BASE + '/docs/design-system'} class="home__doc-card" target="_blank" rel="noopener noreferrer">
88
- <h3>Design System</h3>
89
- <p>Semantic variables, typography, and design principles</p>
90
- <span class="sr-only"> (opens in new tab)</span>
91
- </a>
92
- <a href={DOCS_BASE + '/docs/accessibility'} class="home__doc-card" target="_blank" rel="noopener noreferrer">
93
- <h3>Accessibility</h3>
94
- <p>Accessibility guidelines, utilities, and best practices</p>
95
- <span class="sr-only"> (opens in new tab)</span>
96
- </a>
97
- <a href={DOCS_BASE + '/docs/colors'} class="home__doc-card" target="_blank" rel="noopener noreferrer">
98
- <h3>Colors</h3>
99
- <p>Interactive color reference with multiple format options</p>
100
- <span class="sr-only"> (opens in new tab)</span>
101
- </a>
96
+ <section class="portfolio__section portfolio__contact" id="contact">
97
+ <h2 class="home__section-title">Contact</h2>
98
+ <p class="portfolio__contact-text">
99
+ Interested in working together? Replace with your own message and add your email and social links below.
100
+ </p>
101
+ <div class="portfolio__contact-ctas">
102
+ <a href="mailto:you@example.com" class="btn btn-primary">Email me</a>
103
+ <a href="https://linkedin.com" class="btn btn-outline" target="_blank" rel="noopener noreferrer">LinkedIn</a>
104
+ <a href="https://github.com" class="btn btn-outline" target="_blank" rel="noopener noreferrer">GitHub</a>
102
105
  </div>
103
106
  </section>
104
107
  </div>
105
108
  </main>
109
+
110
+ <style>
111
+ .portfolio__hero {
112
+ margin-bottom: var(--spacing-8);
113
+ }
114
+ .portfolio__title {
115
+ margin-bottom: var(--spacing-2);
116
+ }
117
+ .portfolio__subtitle {
118
+ margin-bottom: var(--spacing-6);
119
+ }
120
+ .portfolio__ctas {
121
+ display: flex;
122
+ flex-wrap: wrap;
123
+ gap: var(--spacing-3);
124
+ }
125
+ .portfolio__section {
126
+ margin-bottom: var(--spacing-10);
127
+ }
128
+ .portfolio__about-text {
129
+ max-width: 65ch;
130
+ margin: 0;
131
+ color: var(--text);
132
+ }
133
+ .portfolio__skills {
134
+ display: flex;
135
+ flex-wrap: wrap;
136
+ gap: var(--spacing-3);
137
+ margin-bottom: var(--spacing-2);
138
+ }
139
+ .portfolio__skill {
140
+ display: inline-flex;
141
+ align-items: center;
142
+ padding: var(--spacing-2) var(--spacing-3);
143
+ background: var(--surface);
144
+ border-radius: var(--radius-md);
145
+ font-size: var(--text-sm);
146
+ }
147
+ .portfolio__skills-note {
148
+ margin: 0;
149
+ font-size: var(--text-sm);
150
+ color: var(--text-dim);
151
+ }
152
+ .portfolio__projects-grid {
153
+ display: grid;
154
+ grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
155
+ gap: var(--spacing-6);
156
+ }
157
+ .portfolio__project-card :global(.card__body) {
158
+ display: flex;
159
+ flex-direction: column;
160
+ gap: var(--spacing-3);
161
+ }
162
+ .portfolio__tags {
163
+ display: flex;
164
+ flex-wrap: wrap;
165
+ gap: var(--spacing-2);
166
+ }
167
+ .portfolio__contact-text {
168
+ margin: 0 0 var(--spacing-4);
169
+ color: var(--text);
170
+ }
171
+ .portfolio__contact-ctas {
172
+ display: flex;
173
+ flex-wrap: wrap;
174
+ gap: var(--spacing-3);
175
+ }
176
+ </style>
@@ -43,6 +43,7 @@ export { default as FontSwitcher } from './FontSwitcher.svelte';
43
43
  export { default as SoundEffects } from './SoundEffects.svelte';
44
44
  export { default as DocsSidebar } from './DocsSidebar.svelte';
45
45
  export { default as Navbar } from './Navbar.svelte';
46
+ export type { NavbarLink } from './Navbar.svelte';
46
47
  export { default as Settings } from './Settings.svelte';
47
48
  export { default as Search } from './Search.svelte';
48
49
  export { default as Skeleton } from './Skeleton.svelte';
@@ -2,9 +2,11 @@
2
2
  import Navbar from '$lib/rizzo/Navbar.svelte';
3
3
  import Footer from '$lib/rizzo/Footer.svelte';
4
4
  import Settings from '$lib/rizzo/Settings.svelte';
5
+ import BackToTop from '$lib/rizzo/BackToTop.svelte';
5
6
  </script>
6
7
 
7
8
  <Navbar siteName="Rizzo CSS" />
8
9
  <slot />
9
10
  <Footer />
11
+ <BackToTop />
10
12
  <Settings />
@@ -28,7 +28,7 @@ If you prefer to load CSS from a CDN instead of the local file, replace the `<li
28
28
  - `<link rel="stylesheet" href="https://unpkg.com/rizzo-css@latest/dist/rizzo.min.css" />`
29
29
  - Or jsDelivr: `https://cdn.jsdelivr.net/npm/rizzo-css@latest/dist/rizzo.min.css`
30
30
 
31
- (Replace `@latest` with a specific version, e.g. `@0.0.75`, in production.)
31
+ (Replace `@latest` with a specific version, e.g. `@0.0.77`, in production.)
32
32
 
33
33
  The CLI replaces placeholders in `index.html` (e.g. `{{DATA_THEME}}`, `{{TITLE}}`) when you run `rizzo-css init`. The theme selected during init is used on first load when you have no saved preference in the browser.
34
34