@ulu/frontend 0.6.7 → 0.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.dev.md +6 -1
- package/dist/mcp-data.json +72004 -0
- package/dist/umd/frontend.css +1 -1
- package/lib/scss/base/_themes.demo.html +25 -0
- package/lib/scss/components/_accordion.demo.html +89 -0
- package/lib/scss/components/_accordion.scss +1 -1
- package/lib/scss/components/_badge-stack.demo.html +54 -0
- package/lib/scss/components/_badge.demo.html +41 -0
- package/lib/scss/components/_basic-hero.demo.html +33 -0
- package/lib/scss/components/_breadcrumb.demo.html +39 -0
- package/lib/scss/components/_button-group.demo.html +19 -0
- package/lib/scss/components/_button-verbose.demo.html +23 -0
- package/lib/scss/components/_button.demo.html +24 -0
- package/lib/scss/components/_button.scss +9 -11
- package/lib/scss/components/_callout.demo.html +32 -0
- package/lib/scss/components/_captioned-figure.demo.html +32 -0
- package/lib/scss/components/_card-grid.demo.html +34 -0
- package/lib/scss/components/_card.demo.html +49 -0
- package/lib/scss/components/_card.scss +14 -4
- package/lib/scss/components/_counter-list.demo.html +28 -0
- package/lib/scss/components/_css-icon.demo.html +49 -0
- package/lib/scss/components/_data-grid.demo.html +47 -0
- package/lib/scss/components/_data-list.demo.html +67 -0
- package/lib/scss/components/_data-table.demo.html +91 -0
- package/lib/scss/components/_definition-list.demo.html +59 -0
- package/lib/scss/components/_flipcard.demo.html +40 -0
- package/lib/scss/components/_headline-label.demo.html +9 -0
- package/lib/scss/components/_hero.demo.html +40 -0
- package/lib/scss/components/_image-grid.demo.html +24 -0
- package/lib/scss/components/_input-group.demo.html +42 -0
- package/lib/scss/components/_list-inline.demo.html +20 -0
- package/lib/scss/components/_list-lines.demo.html +19 -0
- package/lib/scss/components/_menu-stack.demo.html +69 -0
- package/lib/scss/components/_modal.demo.html +49 -0
- package/lib/scss/components/_nav-strip.demo.html +36 -0
- package/lib/scss/components/_overlay-section.demo.html +29 -0
- package/lib/scss/components/_panel.demo.html +31 -0
- package/lib/scss/components/_popover.demo.html +48 -0
- package/lib/scss/components/_progress-bar.demo.html +40 -0
- package/lib/scss/components/_progress-circle.demo.html +44 -0
- package/lib/scss/components/_pull-quote.demo.html +20 -0
- package/lib/scss/components/_rail.demo.html +41 -0
- package/lib/scss/components/_ratio-box.demo.html +15 -0
- package/lib/scss/components/_rule.demo.html +22 -0
- package/lib/scss/components/_skeleton.demo.html +39 -0
- package/lib/scss/components/_slider.demo.html +28 -0
- package/lib/scss/components/_sticky-list.demo.html +25 -0
- package/lib/scss/components/_tabs.demo.html +41 -0
- package/lib/scss/components/_tag.demo.html +20 -0
- package/lib/scss/components/_tagged.demo.html +17 -0
- package/lib/scss/components/_tile-grid.demo.html +22 -0
- package/lib/scss/components/_wysiwyg.demo.html +14 -0
- package/package.json +9 -4
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Nav Strip
|
|
3
|
+
description: A simple horizontal list of navigation links with an active state underline.
|
|
4
|
+
-->
|
|
5
|
+
<nav class="nav-strip">
|
|
6
|
+
<ul class="nav-strip__list">
|
|
7
|
+
<li class="nav-strip__item"><a href="#" class="nav-strip__link">Overview</a></li>
|
|
8
|
+
<li class="nav-strip__item"><a href="#" class="nav-strip__link is-active">Features</a></li>
|
|
9
|
+
<li class="nav-strip__item"><a href="#" class="nav-strip__link">Pricing</a></li>
|
|
10
|
+
<li class="nav-strip__item"><a href="#" class="nav-strip__link">Support</a></li>
|
|
11
|
+
</ul>
|
|
12
|
+
</nav>
|
|
13
|
+
|
|
14
|
+
<!-- @ulu-demo
|
|
15
|
+
title: Nav Strip with Base Rule
|
|
16
|
+
description: Using the `nav-strip--rule` modifier to add a continuous horizontal line beneath the navigation items.
|
|
17
|
+
-->
|
|
18
|
+
<nav class="nav-strip nav-strip--rule">
|
|
19
|
+
<ul class="nav-strip__list">
|
|
20
|
+
<li class="nav-strip__item"><a href="#" class="nav-strip__link is-active">Dashboard</a></li>
|
|
21
|
+
<li class="nav-strip__item"><a href="#" class="nav-strip__link">Settings</a></li>
|
|
22
|
+
<li class="nav-strip__item"><a href="#" class="nav-strip__link">Analytics</a></li>
|
|
23
|
+
</ul>
|
|
24
|
+
</nav>
|
|
25
|
+
|
|
26
|
+
<!-- @ulu-demo
|
|
27
|
+
title: Automatic (Markup Only) Nav Strip
|
|
28
|
+
description: The `nav-strip--auto` modifier applies styling to standard `ul/li/a` tags without requiring component-specific classes on every element.
|
|
29
|
+
-->
|
|
30
|
+
<div class="nav-strip nav-strip--auto">
|
|
31
|
+
<ul>
|
|
32
|
+
<li><a href="#" class="is-active">Recent</a></li>
|
|
33
|
+
<li><a href="#">Popular</a></li>
|
|
34
|
+
<li><a href="#">Trending</a></li>
|
|
35
|
+
</ul>
|
|
36
|
+
</div>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Overlay Section
|
|
3
|
+
description: A section with a full-bleed background and centered content box.
|
|
4
|
+
-->
|
|
5
|
+
<section class="overlay-section">
|
|
6
|
+
<div class="overlay-section__background">
|
|
7
|
+
<img src="https://picsum.photos/id/101/1200/800" alt="Background Image">
|
|
8
|
+
</div>
|
|
9
|
+
<div class="overlay-section__content">
|
|
10
|
+
<h2 class="h2">Centered Content</h2>
|
|
11
|
+
<p>This content box is centered over the background image, providing a clear focal point for messaging.</p>
|
|
12
|
+
<a href="#" class="button">Explore More</a>
|
|
13
|
+
</div>
|
|
14
|
+
</section>
|
|
15
|
+
|
|
16
|
+
<!-- @ulu-demo
|
|
17
|
+
title: Right-Aligned Overlay
|
|
18
|
+
description: Using the `overlay-section--right` modifier to position the content box on the right side of the section.
|
|
19
|
+
-->
|
|
20
|
+
<section class="overlay-section overlay-section--right">
|
|
21
|
+
<div class="overlay-section__background">
|
|
22
|
+
<img src="https://picsum.photos/id/104/1200/800" alt="Background Image">
|
|
23
|
+
</div>
|
|
24
|
+
<div class="overlay-section__content">
|
|
25
|
+
<h2 class="h2">Side Aligned</h2>
|
|
26
|
+
<p>Positioning content to the side can help prevent obscuring important details in the background image.</p>
|
|
27
|
+
<a href="#" class="button">Contact Us</a>
|
|
28
|
+
</div>
|
|
29
|
+
</section>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Standard Panel
|
|
3
|
+
description: A structured container with a distinct header, body, and footer.
|
|
4
|
+
-->
|
|
5
|
+
<div class="panel">
|
|
6
|
+
<div class="panel__row panel__row--header">
|
|
7
|
+
<h3 class="h4">Account Overview</h3>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="panel__row">
|
|
10
|
+
<p>Your subscription is active and will renew on November 15th. You have 3 active projects and 12 collaborators.</p>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="panel__row panel__row--footer">
|
|
13
|
+
<a href="#" class="button button--small">Manage Subscription</a>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<!-- @ulu-demo
|
|
18
|
+
title: Transparent Panel with Separators
|
|
19
|
+
description: Using the `panel--transparent` modifier for a seamless look, with `panel__row--separator-top` for visual division.
|
|
20
|
+
-->
|
|
21
|
+
<div class="panel panel--transparent">
|
|
22
|
+
<div class="panel__row panel__row--header">
|
|
23
|
+
<h3 class="h4">System Status</h3>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="panel__row">
|
|
26
|
+
<p>All systems are operational. No active incidents reported in the last 24 hours.</p>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="panel__row panel__row--separator-top">
|
|
29
|
+
<p class="type-small">Last checked: 5 minutes ago</p>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Popover
|
|
3
|
+
description: A standard popover that appears near a trigger element, including a pointer arrow.
|
|
4
|
+
-->
|
|
5
|
+
<div style="padding: 4rem 0;">
|
|
6
|
+
<button class="button" data-ulu-popover-trigger>Toggle Popover</button>
|
|
7
|
+
<div class="popover" data-ulu-popover-content>
|
|
8
|
+
<div class="popover__inner">
|
|
9
|
+
<p>This is the content of the popover. It can contain text, links, or other small UI elements.</p>
|
|
10
|
+
</div>
|
|
11
|
+
<span class="popover__arrow" data-ulu-popover-arrow></span>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- @ulu-demo
|
|
16
|
+
title: Popover with Footer
|
|
17
|
+
description: Using the `popover__footer` element to add actions or metadata at the bottom.
|
|
18
|
+
-->
|
|
19
|
+
<div style="padding: 4rem 0;">
|
|
20
|
+
<button class="button" data-ulu-popover-trigger>Open Menu</button>
|
|
21
|
+
<div class="popover" data-ulu-popover-content>
|
|
22
|
+
<div class="popover__header">Options</div>
|
|
23
|
+
<div class="popover__inner">
|
|
24
|
+
<ul class="list-lines list-lines--dense">
|
|
25
|
+
<li>Notification Settings</li>
|
|
26
|
+
<li>Privacy Controls</li>
|
|
27
|
+
</ul>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="popover__footer">
|
|
30
|
+
<a href="#" class="type-small">Learn More</a>
|
|
31
|
+
</div>
|
|
32
|
+
<span class="popover__arrow" data-ulu-popover-arrow></span>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<!-- @ulu-demo
|
|
37
|
+
title: Tooltip Modifier
|
|
38
|
+
description: The `popover--tooltip` modifier creates a smaller, non-interactive overlay typically used for labels.
|
|
39
|
+
-->
|
|
40
|
+
<div style="padding: 2rem 0;">
|
|
41
|
+
<button class="button" data-ulu-popover-trigger='{ "floating": { "placement": "top" }, "trigger": "hover" }'>Hover Me</button>
|
|
42
|
+
<div class="popover popover--tooltip" data-ulu-popover-content>
|
|
43
|
+
<div class="popover__inner">
|
|
44
|
+
Helpful hint about this action
|
|
45
|
+
</div>
|
|
46
|
+
<span class="popover__arrow" data-ulu-popover-arrow></span>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Progress Bar
|
|
3
|
+
description: A standard progress bar with a label and percentage value.
|
|
4
|
+
-->
|
|
5
|
+
<div class="progress-bar">
|
|
6
|
+
<div class="progress-bar__header">
|
|
7
|
+
<strong class="progress-bar__label">System Update</strong>
|
|
8
|
+
<span class="progress-bar__value">65%</span>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="progress-bar__track">
|
|
11
|
+
<div class="progress-bar__bar" style="width: 65%;"></div>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- @ulu-demo
|
|
16
|
+
title: Indeterminate Loader
|
|
17
|
+
description: An animated bar for states where progress is unknown, using the `progress-bar--indeterminate` modifier.
|
|
18
|
+
-->
|
|
19
|
+
<div class="progress-bar progress-bar--loader progress-bar--indeterminate">
|
|
20
|
+
<div class="progress-bar__track">
|
|
21
|
+
<div class="progress-bar__bar"></div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<!-- @ulu-demo
|
|
26
|
+
title: Semantic Status Bars
|
|
27
|
+
description: Using status modifiers like `progress-bar--success` and `progress-bar--danger`.
|
|
28
|
+
-->
|
|
29
|
+
<div class="progress-bar progress-bar--success">
|
|
30
|
+
<div class="progress-bar__header"><strong class="progress-bar__label">Setup Complete</strong></div>
|
|
31
|
+
<div class="progress-bar__track">
|
|
32
|
+
<div class="progress-bar__bar" style="width: 100%;"></div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="progress-bar progress-bar--danger">
|
|
36
|
+
<div class="progress-bar__header"><strong class="progress-bar__label">Storage Low</strong></div>
|
|
37
|
+
<div class="progress-bar__track">
|
|
38
|
+
<div class="progress-bar__bar" style="width: 92%;"></div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Donut Chart
|
|
3
|
+
description: A circular progress indicator using an SVG donut chart structure.
|
|
4
|
+
-->
|
|
5
|
+
<div class="progress-circle">
|
|
6
|
+
<div class="progress-circle__chart">
|
|
7
|
+
<svg class="progress-circle__chart-svg" viewBox="0 0 32 32">
|
|
8
|
+
<circle class="progress-circle__chart-track" cx="16" cy="16" r="11"></circle>
|
|
9
|
+
<circle class="progress-circle__chart-pie" cx="16" cy="16" r="11" style="stroke-dasharray: 65 100;"></circle>
|
|
10
|
+
<circle class="progress-circle__chart-mask" cx="16" cy="16"></circle>
|
|
11
|
+
</svg>
|
|
12
|
+
<strong class="progress-circle__chart-value">65%</strong>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<!-- @ulu-demo
|
|
17
|
+
title: Pie Chart Variant
|
|
18
|
+
description: Using the `progress-circle--pie` modifier to create a solid circular progress indicator.
|
|
19
|
+
-->
|
|
20
|
+
<div class="progress-circle progress-circle--pie">
|
|
21
|
+
<div class="progress-circle__chart">
|
|
22
|
+
<svg class="progress-circle__chart-svg" viewBox="0 0 32 32">
|
|
23
|
+
<circle class="progress-circle__chart-track" cx="16" cy="16" r="16"></circle>
|
|
24
|
+
<circle class="progress-circle__chart-pie" cx="16" cy="16" r="16" style="stroke-dasharray: 40 100;"></circle>
|
|
25
|
+
<circle class="progress-circle__chart-mask" cx="16" cy="16" r="16"></circle>
|
|
26
|
+
</svg>
|
|
27
|
+
<strong class="progress-circle__chart-value" style="color: white;">40%</strong>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<!-- @ulu-demo
|
|
32
|
+
title: Small Progress Circle
|
|
33
|
+
description: Using the `progress-circle--small` modifier for space-constrained layouts.
|
|
34
|
+
-->
|
|
35
|
+
<div class="progress-circle progress-circle--small">
|
|
36
|
+
<div class="progress-circle__chart">
|
|
37
|
+
<svg class="progress-circle__chart-svg" viewBox="0 0 32 32">
|
|
38
|
+
<circle class="progress-circle__chart-track" cx="16" cy="16" r="9.5"></circle>
|
|
39
|
+
<circle class="progress-circle__chart-pie" cx="16" cy="16" r="9.5" style="stroke-dasharray: 85 100;"></circle>
|
|
40
|
+
<circle class="progress-circle__chart-mask" cx="16" cy="16"></circle>
|
|
41
|
+
</svg>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="progress-circle__value">85% Complete</div>
|
|
44
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Standard Pull Quote
|
|
3
|
+
description: A centered pull quote with an optional author image, name, and title.
|
|
4
|
+
-->
|
|
5
|
+
<figure class="pull-quote">
|
|
6
|
+
<blockquote class="pull-quote__body type-large-x">
|
|
7
|
+
<p>The best way to predict the future is to create it. Design systems provide the foundation for that creation.</p>
|
|
8
|
+
</blockquote>
|
|
9
|
+
<figcaption class="pull-quote__author">
|
|
10
|
+
<div class="pull-quote__author-image">
|
|
11
|
+
<div class="badge badge--small">
|
|
12
|
+
<div class="badge__inner">
|
|
13
|
+
<img src="https://picsum.photos/id/64/100/100" alt="Jane Doe">
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<strong class="pull-quote__author-name">Jane Doe</strong>
|
|
18
|
+
<span class="pull-quote__author-title">Principal Design Architect</span>
|
|
19
|
+
</figcaption>
|
|
20
|
+
</figure>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Rail
|
|
3
|
+
description: A flexible horizontal container with the last item pushed to the right using `rail__item--pull`.
|
|
4
|
+
-->
|
|
5
|
+
<div class="rail">
|
|
6
|
+
<div class="rail__item">
|
|
7
|
+
<h3 class="h4 no-margin">Section Title</h3>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="rail__item"><span class="tag">Active</span></div>
|
|
10
|
+
<div class="rail__item rail__item--pull">
|
|
11
|
+
<button class="button button--small">Action</button>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- @ulu-demo
|
|
16
|
+
title: Justified Toolbar
|
|
17
|
+
description: Using the `rail--justified` modifier to space items out across the full width.
|
|
18
|
+
-->
|
|
19
|
+
<div class="rail rail--justified">
|
|
20
|
+
<div class="rail__item">
|
|
21
|
+
<strong>Showing 1-10 of 124 results</strong>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="rail__item">
|
|
24
|
+
<div class="button-group">
|
|
25
|
+
<button class="button button--small button--outline">Previous</button>
|
|
26
|
+
<button class="button button--small button--outline">Next</button>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<!-- @ulu-demo
|
|
32
|
+
title: Rail with Separator
|
|
33
|
+
description: Using the `rail__item--separator` modifier to add a vertical divider before an item.
|
|
34
|
+
-->
|
|
35
|
+
<div class="rail">
|
|
36
|
+
<div class="rail__item">Account Settings</div>
|
|
37
|
+
<div class="rail__item">Security</div>
|
|
38
|
+
<div class="rail__item rail__item--separator">
|
|
39
|
+
<a href="#" class="color-danger">Log Out</a>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Default Ratio (4/3)
|
|
3
|
+
description: A standard 4/3 aspect ratio box, useful for traditional photography or balanced content.
|
|
4
|
+
-->
|
|
5
|
+
<div class="ratio-box" style="max-width: 400px;">
|
|
6
|
+
<img src="https://picsum.photos/id/1011/400/300" class="ratio-box__content" alt="4/3 Image">
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<!-- @ulu-demo
|
|
10
|
+
title: Widescreen Ratio (16/9)
|
|
11
|
+
description: Using the `ratio-box--16x9` modifier for video content or wide banners.
|
|
12
|
+
-->
|
|
13
|
+
<div class="ratio-box ratio-box--16x9" style="max-width: 600px;">
|
|
14
|
+
<img src="https://picsum.photos/id/1015/600/337" class="ratio-box__content" alt="16/9 Image">
|
|
15
|
+
</div>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Horizontal Rule
|
|
3
|
+
description: A standard horizontal line used to separate sections of content.
|
|
4
|
+
-->
|
|
5
|
+
<p>Content above the rule.</p>
|
|
6
|
+
<hr class="rule">
|
|
7
|
+
<p>Content below the rule.</p>
|
|
8
|
+
|
|
9
|
+
<!-- @ulu-demo
|
|
10
|
+
title: Short Accent Rule
|
|
11
|
+
description: Using the `rule--short` modifier to create a small, decorative line often used under headings.
|
|
12
|
+
-->
|
|
13
|
+
<h3 class="h3">Section Title</h3>
|
|
14
|
+
<div class="rule rule--short"></div>
|
|
15
|
+
<p>A brief introduction to the section follows the decorative short rule.</p>
|
|
16
|
+
|
|
17
|
+
<!-- @ulu-demo
|
|
18
|
+
title: Large Margin Rule
|
|
19
|
+
description: A rule with increased vertical spacing using the `rule--margin-large` modifier.
|
|
20
|
+
-->
|
|
21
|
+
<div class="rule rule--margin-large"></div>
|
|
22
|
+
<p>This rule creates significant visual separation between major content blocks.</p>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Skeleton Text
|
|
3
|
+
description: Placeholder lines for text content during loading.
|
|
4
|
+
-->
|
|
5
|
+
<div style="max-width: 400px;">
|
|
6
|
+
<div class="skeleton skeleton--text skeleton--width-large"></div>
|
|
7
|
+
<div class="skeleton skeleton--text"></div>
|
|
8
|
+
<div class="skeleton skeleton--text"></div>
|
|
9
|
+
<div class="skeleton skeleton--text skeleton--width-small"></div>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<!-- @ulu-demo
|
|
13
|
+
title: Skeleton Media
|
|
14
|
+
description: A placeholder for images or video assets.
|
|
15
|
+
-->
|
|
16
|
+
<div style="max-width: 300px;">
|
|
17
|
+
<div class="skeleton skeleton--media">
|
|
18
|
+
<span aria-hidden="true">🖼️</span>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<!-- @ulu-demo
|
|
23
|
+
title: Composite Skeleton (Card)
|
|
24
|
+
description: Combining different skeleton elements to represent a complex UI component.
|
|
25
|
+
-->
|
|
26
|
+
<article class="card" style="max-width: 300px;">
|
|
27
|
+
<div class="card__image">
|
|
28
|
+
<div class="skeleton skeleton--block" style="aspect-ratio: 16/9;"></div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="card__body">
|
|
31
|
+
<div class="card__title">
|
|
32
|
+
<div class="skeleton skeleton--text skeleton--width-large"></div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="card__main">
|
|
35
|
+
<div class="skeleton skeleton--text"></div>
|
|
36
|
+
<div class="skeleton skeleton--text skeleton--width-small"></div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</article>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Image Slider
|
|
3
|
+
description: A standard carousel for cycling through images.
|
|
4
|
+
-->
|
|
5
|
+
<div class="slider" data-ulu-slider>
|
|
6
|
+
<div class="slider__control-context">
|
|
7
|
+
<ul class="slider__track" data-ulu-slider-track>
|
|
8
|
+
<li class="slider__slide" data-ulu-slider-slide>
|
|
9
|
+
<img src="https://picsum.photos/id/10/800/400" alt="Slide 1">
|
|
10
|
+
</li>
|
|
11
|
+
<li class="slider__slide" data-ulu-slider-slide>
|
|
12
|
+
<img src="https://picsum.photos/id/11/800/400" alt="Slide 2">
|
|
13
|
+
</li>
|
|
14
|
+
<li class="slider__slide" data-ulu-slider-slide>
|
|
15
|
+
<img src="https://picsum.photos/id/12/800/400" alt="Slide 3">
|
|
16
|
+
</li>
|
|
17
|
+
</ul>
|
|
18
|
+
<div class="Slider__controls">
|
|
19
|
+
<button class="button button--icon Slider__control-button Slider__control-button--previous" data-ulu-slider-previous aria-label="Previous Slide">
|
|
20
|
+
<span class="css-icon css-icon--angle-left"></span>
|
|
21
|
+
</button>
|
|
22
|
+
<button class="button button--icon Slider__control-button Slider__control-button--next" data-ulu-slider-next aria-label="Next Slide">
|
|
23
|
+
<span class="css-icon css-icon--angle-right"></span>
|
|
24
|
+
</button>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="Slider__nav" data-ulu-slider-nav></div>
|
|
28
|
+
</div>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Sticky Header List
|
|
3
|
+
description: A list where the header stays sticky as the user scrolls through the individual items.
|
|
4
|
+
-->
|
|
5
|
+
<div class="sticky-list">
|
|
6
|
+
<h3 class="sticky-list__title">Process Steps</h3>
|
|
7
|
+
<ul class="sticky-list__list">
|
|
8
|
+
<li class="sticky-list__item">
|
|
9
|
+
<h4 class="h4">1. Discovery</h4>
|
|
10
|
+
<p>Researching current market trends and user needs to identify core challenges and opportunities.</p>
|
|
11
|
+
</li>
|
|
12
|
+
<li class="sticky-list__item">
|
|
13
|
+
<h4 class="h4">2. Definition</h4>
|
|
14
|
+
<p>Establishing clear project goals, technical requirements, and functional specifications.</p>
|
|
15
|
+
</li>
|
|
16
|
+
<li class="sticky-list__item">
|
|
17
|
+
<h4 class="h4">3. Design</h4>
|
|
18
|
+
<p>Creating comprehensive architectural plans, UI/UX designs, and detailed system workflows.</p>
|
|
19
|
+
</li>
|
|
20
|
+
<li class="sticky-list__item">
|
|
21
|
+
<h4 class="h4">4. Development</h4>
|
|
22
|
+
<p>Iterative implementation of features, rigorous testing, and continuous integration of components.</p>
|
|
23
|
+
</li>
|
|
24
|
+
</ul>
|
|
25
|
+
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Horizontal Tabs
|
|
3
|
+
description: A standard tabbed interface with labels positioned horizontally above the content.
|
|
4
|
+
-->
|
|
5
|
+
<div class="tabs">
|
|
6
|
+
<div role="tablist" data-ulu-tablist='{ "equalHeights": true }'>
|
|
7
|
+
<button role="tab" id="tab-1" aria-selected="true" aria-controls="panel-1">General Info</button>
|
|
8
|
+
<button role="tab" id="tab-2" aria-selected="false" aria-controls="panel-2">Specifications</button>
|
|
9
|
+
<button role="tab" id="tab-3" aria-selected="false" aria-controls="panel-3">Reviews</button>
|
|
10
|
+
</div>
|
|
11
|
+
<div role="tabpanel" id="panel-1" aria-labelledby="tab-1">
|
|
12
|
+
<p>This is the general information about the product or service. It covers the core value propositions and high-level features.</p>
|
|
13
|
+
</div>
|
|
14
|
+
<div role="tabpanel" id="panel-2" aria-labelledby="tab-2" hidden>
|
|
15
|
+
<p>Technical specifications and detailed measurements are listed here for professional review.</p>
|
|
16
|
+
</div>
|
|
17
|
+
<div role="tabpanel" id="panel-3" aria-labelledby="tab-3" hidden>
|
|
18
|
+
<p>Customer feedback and ratings provide real-world insights from our community of users.</p>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<!-- @ulu-demo
|
|
23
|
+
title: Vertical Tabs
|
|
24
|
+
description: Using the `tabs--vertical` modifier to place tab labels in a sidebar layout on larger screens.
|
|
25
|
+
-->
|
|
26
|
+
<div class="tabs tabs--vertical">
|
|
27
|
+
<div role="tablist" data-ulu-tablist='{ "vertical": true, "equalHeights": true }'>
|
|
28
|
+
<button role="tab" id="v-tab-1" aria-selected="true" aria-controls="v-panel-1">Account Profile</button>
|
|
29
|
+
<button role="tab" id="v-tab-2" aria-selected="false" aria-controls="v-panel-2">Privacy Settings</button>
|
|
30
|
+
<button role="tab" id="v-tab-3" aria-selected="false" aria-controls="v-panel-3">Notification Preferences</button>
|
|
31
|
+
</div>
|
|
32
|
+
<div role="tabpanel" id="v-panel-1" aria-labelledby="v-tab-1">
|
|
33
|
+
<p>Manage your personal information, profile picture, and contact details.</p>
|
|
34
|
+
</div>
|
|
35
|
+
<div role="tabpanel" id="v-panel-2" aria-labelledby="v-tab-2" hidden>
|
|
36
|
+
<p>Control who can see your activity and how your data is used across the platform.</p>
|
|
37
|
+
</div>
|
|
38
|
+
<div role="tabpanel" id="v-panel-3" aria-labelledby="v-tab-3" hidden>
|
|
39
|
+
<p>Customize which alerts you receive via email, push notification, or SMS.</p>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Tag
|
|
3
|
+
description: A small label for categorization or status identification.
|
|
4
|
+
-->
|
|
5
|
+
<span class="tag">Standard Tag</span>
|
|
6
|
+
<span class="tag tag--outline">Outline Tag</span>
|
|
7
|
+
|
|
8
|
+
<!-- @ulu-demo
|
|
9
|
+
title: Semantic Status Tags
|
|
10
|
+
description: Using status modifiers like `tag--success` and `tag--danger`.
|
|
11
|
+
-->
|
|
12
|
+
<span class="tag tag--success">Verified</span>
|
|
13
|
+
<span class="tag tag--danger">Action Required</span>
|
|
14
|
+
|
|
15
|
+
<!-- @ulu-demo
|
|
16
|
+
title: Counter Tag
|
|
17
|
+
description: Using the `tag--counter` modifier to display numerical values, often for notifications or counts.
|
|
18
|
+
-->
|
|
19
|
+
<span class="tag tag--counter">5</span>
|
|
20
|
+
<span class="tag tag--small tag--counter">124</span>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Tagged Icon Button
|
|
3
|
+
description: Positioning a notification counter tag over an icon button.
|
|
4
|
+
-->
|
|
5
|
+
<button class="button button--icon tagged">
|
|
6
|
+
<span class="button__icon" aria-hidden="true">🔔</span>
|
|
7
|
+
<span class="tagged__tag tag tag--danger tag--small tag--counter">3</span>
|
|
8
|
+
</button>
|
|
9
|
+
|
|
10
|
+
<!-- @ulu-demo
|
|
11
|
+
title: Tagged Text Button
|
|
12
|
+
description: Positioning a tag over a standard text-based button.
|
|
13
|
+
-->
|
|
14
|
+
<button class="button tagged">
|
|
15
|
+
<span>Messages</span>
|
|
16
|
+
<span class="tagged__tag tag tag--danger tag--small tag--counter">12</span>
|
|
17
|
+
</button>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: Basic Tile Grid (Reflowable)
|
|
3
|
+
description: A grid of tiles that automatically reflows to fit as many items as possible based on a preferred minimum width.
|
|
4
|
+
-->
|
|
5
|
+
<div class="tile-grid">
|
|
6
|
+
<div class="tile-grid__item" style="background: #eee; border: 1px solid #ccc; display: flex; align-items: center; justify-content: center;">Tile 1</div>
|
|
7
|
+
<div class="tile-grid__item" style="background: #eee; border: 1px solid #ccc; display: flex; align-items: center; justify-content: center;">Tile 2</div>
|
|
8
|
+
<div class="tile-grid__item" style="background: #eee; border: 1px solid #ccc; display: flex; align-items: center; justify-content: center;">Tile 3</div>
|
|
9
|
+
<div class="tile-grid__item" style="background: #eee; border: 1px solid #ccc; display: flex; align-items: center; justify-content: center;">Tile 4</div>
|
|
10
|
+
<div class="tile-grid__item" style="background: #eee; border: 1px solid #ccc; display: flex; align-items: center; justify-content: center;">Tile 5</div>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<!-- @ulu-demo
|
|
14
|
+
title: Static Column Grid
|
|
15
|
+
description: Using the `tile-grid--static` modifier to enforce a specific number of columns that adapt per breakpoint (e.g., 2 on small, 3 on medium).
|
|
16
|
+
-->
|
|
17
|
+
<div class="tile-grid tile-grid--static">
|
|
18
|
+
<div class="tile-grid__item" style="background: #ddd; border: 1px solid #bbb; display: flex; align-items: center; justify-content: center;">Static 1</div>
|
|
19
|
+
<div class="tile-grid__item" style="background: #ddd; border: 1px solid #bbb; display: flex; align-items: center; justify-content: center;">Static 2</div>
|
|
20
|
+
<div class="tile-grid__item" style="background: #ddd; border: 1px solid #bbb; display: flex; align-items: center; justify-content: center;">Static 3</div>
|
|
21
|
+
<div class="tile-grid__item" style="background: #ddd; border: 1px solid #bbb; display: flex; align-items: center; justify-content: center;">Static 4</div>
|
|
22
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- @ulu-demo
|
|
2
|
+
title: WYSIWYG Content
|
|
3
|
+
description: Automatically applies standard styling to raw HTML elements (headings, lists, links) within a container.
|
|
4
|
+
-->
|
|
5
|
+
<div class="wysiwyg">
|
|
6
|
+
<h2>Main Topic</h2>
|
|
7
|
+
<p>This is a paragraph with a <a href="#">link inside it</a>. The styling is automatically handled by the `.wysiwyg` class.</p>
|
|
8
|
+
<ul>
|
|
9
|
+
<li>Unordered list item one</li>
|
|
10
|
+
<li>Unordered list item two</li>
|
|
11
|
+
</ul>
|
|
12
|
+
<h3>Sub-section</h3>
|
|
13
|
+
<p>Headings are also automatically sized according to the typography configuration.</p>
|
|
14
|
+
</div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ulu/frontend",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.9",
|
|
4
4
|
"description": "A framework-agnostic frontend toolkit providing a modular, tree-shakable library of accessible components and utilities. Designed for seamless integration, it features a highly configurable SCSS system for any environment and vanilla JavaScript modules optimized for traditional websites and content management systems.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"types": "./dist/es/index.d.ts",
|
|
13
13
|
"exports": {
|
|
14
14
|
".": {
|
|
15
|
+
"sass" : "./lib/scss/index.scss",
|
|
15
16
|
"types": "./dist/es/index.d.ts",
|
|
16
17
|
"import": "./dist/es/index.js",
|
|
17
18
|
"require": "./dist/umd/ulu-frontend.umd.js"
|
|
@@ -23,7 +24,8 @@
|
|
|
23
24
|
"./js/*": {
|
|
24
25
|
"import": "./dist/es/*",
|
|
25
26
|
"types": "./dist/es/*"
|
|
26
|
-
}
|
|
27
|
+
},
|
|
28
|
+
"./ulu-mcp-provider": "./dist/mcp-data.json"
|
|
27
29
|
},
|
|
28
30
|
"sideEffects": [
|
|
29
31
|
"dist/es/core/events.js",
|
|
@@ -38,7 +40,9 @@
|
|
|
38
40
|
"dev:host": "vite --config site/vite.config.js --host",
|
|
39
41
|
"dev:nogen": "NO_DOC_GEN=true vite --config site/vite.config.js",
|
|
40
42
|
"docs:build": "vite build --config site/vite.config.js",
|
|
41
|
-
"
|
|
43
|
+
"build:mcp-data": "BUILD_MCP=true vite build --config site/vite.config.js && node site/mcp/build-provider.js",
|
|
44
|
+
"mcp": "node mcp-server/sandbox.js",
|
|
45
|
+
"deploy": "npm run build && npm run docs:build && npm run build:mcp-data"
|
|
42
46
|
},
|
|
43
47
|
"repository": {
|
|
44
48
|
"type": "git",
|
|
@@ -119,6 +123,7 @@
|
|
|
119
123
|
"typescript": "^5.9.3",
|
|
120
124
|
"vite": "^7.3.1",
|
|
121
125
|
"vite-plugin-dts": "^4.5.4",
|
|
122
|
-
"vite-plugin-image-optimizer": "^2.0.3"
|
|
126
|
+
"vite-plugin-image-optimizer": "^2.0.3",
|
|
127
|
+
"yaml": "^2.8.4"
|
|
123
128
|
}
|
|
124
129
|
}
|