@birdycom/omniaui-blocks 0.11.0 → 0.11.2

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 (57) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +10 -10
  3. package/blocks/about-timeline.html +23 -23
  4. package/blocks/app-header.html +32 -32
  5. package/blocks/app-shell.html +84 -84
  6. package/blocks/auth-split.html +45 -45
  7. package/blocks/auth.html +21 -21
  8. package/blocks/contact-grid.html +38 -38
  9. package/blocks/cta.html +8 -8
  10. package/blocks/data-table.html +111 -111
  11. package/blocks/faq.html +33 -33
  12. package/blocks/features.html +18 -18
  13. package/blocks/footer.html +41 -41
  14. package/blocks/forgot-password.html +34 -34
  15. package/blocks/form-page.html +28 -28
  16. package/blocks/hero-code.html +27 -27
  17. package/blocks/hero-orbit.html +38 -38
  18. package/blocks/hero-split.html +12 -12
  19. package/blocks/hero.html +10 -10
  20. package/blocks/login-01.html +41 -41
  21. package/blocks/login-02.html +55 -55
  22. package/blocks/login-03.html +47 -47
  23. package/blocks/module-header.html +24 -24
  24. package/blocks/otp-01.html +36 -36
  25. package/blocks/otp-02.html +46 -46
  26. package/blocks/page-hero.html +10 -10
  27. package/blocks/portfolio-grid.html +31 -31
  28. package/blocks/pricing.html +42 -42
  29. package/blocks/process.html +19 -19
  30. package/blocks/product-grid.html +37 -37
  31. package/blocks/profile-header.html +27 -27
  32. package/blocks/reset-password.html +45 -45
  33. package/blocks/showcase.html +27 -27
  34. package/blocks/sidebar-01.html +56 -56
  35. package/blocks/sidebar-02.html +55 -55
  36. package/blocks/sidebar-03.html +53 -53
  37. package/blocks/sidebar-04.html +56 -56
  38. package/blocks/sidebar-05.html +68 -68
  39. package/blocks/signup-01.html +53 -53
  40. package/blocks/signup-02.html +56 -56
  41. package/blocks/site-footer.html +39 -39
  42. package/blocks/site-header.html +14 -14
  43. package/blocks/spotlight.html +22 -22
  44. package/blocks/stats-counter.html +15 -15
  45. package/blocks/stats.html +19 -19
  46. package/blocks/team-list.html +30 -30
  47. package/blocks/two-factor.html +33 -33
  48. package/blocks/wizard-dialog.html +36 -36
  49. package/dist/blocks.css +371 -343
  50. package/dist/blocks.min.css +1 -1
  51. package/dist/parts/site-about-timeline.css +61 -61
  52. package/dist/parts/site-contact-grid.css +58 -58
  53. package/dist/parts/site-faq.css +52 -52
  54. package/dist/parts/site-hero-orbit.css +62 -62
  55. package/dist/parts/site-portfolio-grid.css +23 -23
  56. package/dist/parts/site-profile-header.css +77 -77
  57. package/package.json +55 -55
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Serge Cools (Birdycom)
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Serge Cools (Birdycom)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # @birdycom/omniaui-blocks
2
-
3
- Ready-made page sections composed from OmniaCSS utilities and components: hero, hero-split, page-hero, features, pricing, stats, stats-counter, CTA, auth, footer.
4
-
5
- ```bash
6
- npx omniacss add block pricing # → omnia/blocks/pricing.html
7
- npx omniacss list blocks
8
- ```
9
-
10
- CSS: `import "@birdycom/omniaui-blocks"` (or let `omniacss build` include it). MIT
1
+ # @birdycom/omniaui-blocks
2
+
3
+ Ready-made page sections composed from OmniaCSS utilities and components: hero, hero-split, page-hero, features, pricing, stats, stats-counter, CTA, auth, footer.
4
+
5
+ ```bash
6
+ npx omniacss add block pricing # → omnia/blocks/pricing.html
7
+ npx omniacss list blocks
8
+ ```
9
+
10
+ CSS: `import "@birdycom/omniaui-blocks"` (or let `omniacss build` include it). MIT
@@ -1,23 +1,23 @@
1
- <!-- OmniaUI block: about-timeline - About section: picture with a badge next to the company story and a year timeline. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
- File: packages/blocks/blocks/about-timeline.html | Map: section.oc-block-about -> inner -> media (+ badge) -> copy (eyebrow, title, text, .oc-timeline)
3
- Class API: .oc-block-about (modifier --reverse: picture right), -inner, -media (empty = gradient placeholder, or an <img>),
4
- -badge, -copy, -title. Uses the timeline component (.oc-timeline) and an .oc-accent--* preset for the placeholder.
5
- -->
6
- <section class="oc-block-about oc-accent--blue" aria-labelledby="oc-about-title">
7
- <div class="oc-block-about-inner">
8
- <figure class="oc-block-about-media" aria-hidden="true">
9
- <span class="oc-block-about-badge"><strong>12+</strong>years of building software</span>
10
- </figure>
11
- <div class="oc-block-about-copy">
12
- <p class="oc-eyebrow">About us</p>
13
- <h2 class="oc-block-about-title" id="oc-about-title">Software for everyone. <span class="oc-text-gradient">Since 2012.</span></h2>
14
- <p>Acme started as an IT partner for local businesses. That practical experience is in every line of code we write today.</p>
15
- <p>You talk directly to the people who build your software. No layers in between.</p>
16
- <ol class="oc-timeline">
17
- <li class="oc-timeline__item"><span class="oc-timeline__date">2012</span><p class="oc-timeline__text">Acme is founded by two developers.</p></li>
18
- <li class="oc-timeline__item"><span class="oc-timeline__date">2019</span><p class="oc-timeline__text">New office and a first own product.</p></li>
19
- <li class="oc-timeline__item oc-timeline__item--current"><span class="oc-timeline__date">Today</span><p class="oc-timeline__text">Own products and custom work, from web apps to desktop tools.</p></li>
20
- </ol>
21
- </div>
22
- </div>
23
- </section>
1
+ <!-- OmniaUI block: about-timeline - About section: picture with a badge next to the company story and a year timeline. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
+ File: packages/blocks/blocks/about-timeline.html | Map: section.oc-block-about -> inner -> media (+ badge) -> copy (eyebrow, title, text, .oc-timeline)
3
+ Class API: .oc-block-about (modifier --reverse: picture right), -inner, -media (empty = gradient placeholder, or an <img>),
4
+ -badge, -copy, -title. Uses the timeline component (.oc-timeline) and an .oc-accent--* preset for the placeholder.
5
+ -->
6
+ <section class="oc-block-about oc-accent--blue" aria-labelledby="oc-about-title">
7
+ <div class="oc-block-about-inner">
8
+ <figure class="oc-block-about-media" aria-hidden="true">
9
+ <span class="oc-block-about-badge"><strong>12+</strong>years of building software</span>
10
+ </figure>
11
+ <div class="oc-block-about-copy">
12
+ <p class="oc-eyebrow">About us</p>
13
+ <h2 class="oc-block-about-title" id="oc-about-title">Software for everyone. <span class="oc-text-gradient">Since 2012.</span></h2>
14
+ <p>Acme started as an IT partner for local businesses. That practical experience is in every line of code we write today.</p>
15
+ <p>You talk directly to the people who build your software. No layers in between.</p>
16
+ <ol class="oc-timeline">
17
+ <li class="oc-timeline__item"><span class="oc-timeline__date">2012</span><p class="oc-timeline__text">Acme is founded by two developers.</p></li>
18
+ <li class="oc-timeline__item"><span class="oc-timeline__date">2019</span><p class="oc-timeline__text">New office and a first own product.</p></li>
19
+ <li class="oc-timeline__item oc-timeline__item--current"><span class="oc-timeline__date">Today</span><p class="oc-timeline__text">Own products and custom work, from web apps to desktop tools.</p></li>
20
+ </ol>
21
+ </div>
22
+ </div>
23
+ </section>
@@ -1,32 +1,32 @@
1
- <!-- OmniaUI block: app-header - Top bar with sidebar toggle, module navigation and user actions. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
- Class API (modifiers are extra classes / attributes on the same element):
3
- .oc-block-appbar: Bar (flex row)
4
- .oc-block-appbar-nav: Navigation area; contains an .oc-navmenu
5
- .oc-block-appbar-actions: Right-aligned actions (theme switch, switchers, user menu)
6
- .oc-block-appbar-title: Optional page title
7
- Slots: toggle, module nav, actions (theme switch, workspace select, user dropdown)
8
- -->
9
- <header class="oc-block-appbar">
10
- <label class="oc-btn oc-btn--ghost oc-btn--icon" for="oc-appbar-toggle" title="Toggle sidebar"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg><span class="oc-visually-hidden">Toggle sidebar</span></label>
11
- <nav class="oc-block-appbar-nav" aria-label="Module navigation">
12
- <ul class="oc-navmenu">
13
- <li><a class="oc-navmenu-link" href="#" aria-current="page">Contacts</a></li>
14
- <li><a class="oc-navmenu-link" href="#">Companies</a></li>
15
- <li><a class="oc-navmenu-link" href="#">Segments</a></li>
16
- </ul>
17
- </nav>
18
- <div class="oc-block-appbar-actions">
19
- <div class="oc-theme-switch" role="radiogroup" aria-label="Theme">
20
- <label><input type="radio" name="oc-appbar-theme" value="light"> Light</label>
21
- <label><input type="radio" name="oc-appbar-theme" value="dark"> Dark</label>
22
- </div>
23
- <button class="oc-btn oc-btn--ghost oc-btn--icon" type="button" popovertarget="oc-appbar-user" aria-label="User menu"><span class="oc-avatar oc-avatar--sm">SC</span></button>
24
- <div class="oc-dropdown-menu" id="oc-appbar-user" popover>
25
- <div class="oc-dropdown-label">serge@example.com</div>
26
- <a class="oc-dropdown-item" href="#">Profile</a>
27
- <a class="oc-dropdown-item" href="#">Settings</a>
28
- <div class="oc-dropdown-separator"></div>
29
- <a class="oc-dropdown-item" href="#">Log out</a>
30
- </div>
31
- </div>
32
- </header>
1
+ <!-- OmniaUI block: app-header - Top bar with sidebar toggle, module navigation and user actions. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
+ Class API (modifiers are extra classes / attributes on the same element):
3
+ .oc-block-appbar: Bar (flex row)
4
+ .oc-block-appbar-nav: Navigation area; contains an .oc-navmenu
5
+ .oc-block-appbar-actions: Right-aligned actions (theme switch, switchers, user menu)
6
+ .oc-block-appbar-title: Optional page title
7
+ Slots: toggle, module nav, actions (theme switch, workspace select, user dropdown)
8
+ -->
9
+ <header class="oc-block-appbar">
10
+ <label class="oc-btn oc-btn--ghost oc-btn--icon" for="oc-appbar-toggle" title="Toggle sidebar"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg><span class="oc-visually-hidden">Toggle sidebar</span></label>
11
+ <nav class="oc-block-appbar-nav" aria-label="Module navigation">
12
+ <ul class="oc-navmenu">
13
+ <li><a class="oc-navmenu-link" href="#" aria-current="page">Contacts</a></li>
14
+ <li><a class="oc-navmenu-link" href="#">Companies</a></li>
15
+ <li><a class="oc-navmenu-link" href="#">Segments</a></li>
16
+ </ul>
17
+ </nav>
18
+ <div class="oc-block-appbar-actions">
19
+ <div class="oc-theme-switch" role="radiogroup" aria-label="Theme">
20
+ <label><input type="radio" name="oc-appbar-theme" value="light"> Light</label>
21
+ <label><input type="radio" name="oc-appbar-theme" value="dark"> Dark</label>
22
+ </div>
23
+ <button class="oc-btn oc-btn--ghost oc-btn--icon" type="button" popovertarget="oc-appbar-user" aria-label="User menu"><span class="oc-avatar oc-avatar--sm">SC</span></button>
24
+ <div class="oc-dropdown-menu" id="oc-appbar-user" popover>
25
+ <div class="oc-dropdown-label">serge@example.com</div>
26
+ <a class="oc-dropdown-item" href="#">Profile</a>
27
+ <a class="oc-dropdown-item" href="#">Settings</a>
28
+ <div class="oc-dropdown-separator"></div>
29
+ <a class="oc-dropdown-item" href="#">Log out</a>
30
+ </div>
31
+ </div>
32
+ </header>
@@ -1,84 +1,84 @@
1
- <!-- OmniaUI block: app-shell - Application layout: sidebar, header bar, breadcrumb strip and scrolling content. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
- Class API (modifiers are extra classes / attributes on the same element):
3
- .oc-block-shell: Grid root. Height via --oc-block-shell-height (default 100dvh).
4
- .oc-block-shell-toggle: Hidden checkbox that collapses the sidebar (label for it in the header bar)
5
- .oc-sidebar: Sidebar component (first grid child)
6
- .oc-block-shell-main: Column holding the header bar, breadcrumbs and content
7
- .oc-block-shell-breadcrumbs: Strip under the header bar
8
- .oc-block-shell-content: Scrolling page content (the only scroll container)
9
- .oc-block-shell-menu-button: Shown below 48rem to open the sidebar sheet
10
- Slots: sidebar, header bar (see App header), breadcrumbs, content (default)
11
- -->
12
- <div class="oc-block-shell" style="--oc-block-shell-height: 30rem">
13
- <input class="oc-block-shell-toggle" type="checkbox" id="oc-shell-toggle" aria-label="Collapse sidebar">
14
- <aside class="oc-sidebar " aria-label="Main navigation">
15
- <div class="oc-sidebar-header">
16
- <a class="oc-sidebar-menu-button oc-sidebar-menu-button--lg" href="#">
17
- <svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg>
18
- <span class="oc-sidebar-menu-label"><strong>OmniaDesk</strong></span>
19
- </a>
20
- </div>
21
- <div class="oc-sidebar-content">
22
- <div class="oc-sidebar-group">
23
- <div class="oc-sidebar-group-label">Platform</div>
24
- <ul class="oc-sidebar-menu">
25
- <li><a class="oc-sidebar-menu-button" href="#" aria-current="page"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg><span class="oc-sidebar-menu-label">Dashboard</span></a></li>
26
- <li><a class="oc-sidebar-menu-button" href="#"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="8" r="4"/><path d="M2 21c0-4 3-6 7-6s7 2 7 6"/></svg><span class="oc-sidebar-menu-label">Contacts</span><span class="oc-sidebar-menu-badge">12</span></a></li>
27
- <li>
28
- <details class="oc-sidebar-collapsible" open>
29
- <summary class="oc-sidebar-menu-button"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2h8l5 5v15H6z"/><path d="M14 2v5h5"/></svg><span class="oc-sidebar-menu-label">Invoices</span></summary>
30
- <ul class="oc-sidebar-menu-sub">
31
- <li><a class="oc-sidebar-menu-button" href="#">Sales</a></li>
32
- <li><a class="oc-sidebar-menu-button" href="#">Purchases</a></li>
33
- </ul>
34
- </details>
35
- </li>
36
- <li><a class="oc-sidebar-menu-button" href="#"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 20V10M10 20V4M16 20v-8M22 20H2"/></svg><span class="oc-sidebar-menu-label">Reports</span></a></li>
37
- </ul>
38
- </div>
39
- <div class="oc-sidebar-separator"></div>
40
- <div class="oc-sidebar-group">
41
- <ul class="oc-sidebar-menu">
42
- <li><a class="oc-sidebar-menu-button" href="#"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="3"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3M5 5l2 2M17 17l2 2M19 5l-2 2M7 17l-2 2"/></svg><span class="oc-sidebar-menu-label">Settings</span></a></li>
43
- </ul>
44
- </div>
45
- </div>
46
- <div class="oc-sidebar-footer">
47
- <div class="oc-user">
48
- <span class="oc-avatar oc-avatar--sm">SC</span>
49
- <span class="oc-user-text"><span class="oc-user-name">Serge Cools</span><span class="oc-user-email">serge@example.com</span></span>
50
- </div>
51
- </div>
52
- </aside>
53
- <div class="oc-block-shell-main">
54
- <header class="oc-block-appbar">
55
- <label class="oc-btn oc-btn--ghost oc-btn--icon" for="oc-shell-toggle" title="Toggle sidebar"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg><span class="oc-visually-hidden">Toggle sidebar</span></label>
56
- <nav class="oc-block-appbar-nav" aria-label="Module navigation">
57
- <ul class="oc-navmenu">
58
- <li><a class="oc-navmenu-link" href="#" aria-current="page">Contacts</a></li>
59
- <li><a class="oc-navmenu-link" href="#">Companies</a></li>
60
- <li><a class="oc-navmenu-link" href="#">Segments</a></li>
61
- </ul>
62
- </nav>
63
- <div class="oc-block-appbar-actions">
64
- <div class="oc-theme-switch" role="radiogroup" aria-label="Theme">
65
- <label><input type="radio" name="oc-shell-theme" value="light"> Light</label>
66
- <label><input type="radio" name="oc-shell-theme" value="dark"> Dark</label>
67
- </div>
68
- <button class="oc-btn oc-btn--ghost oc-btn--icon" type="button" popovertarget="oc-shell-user" aria-label="User menu"><span class="oc-avatar oc-avatar--sm">SC</span></button>
69
- <div class="oc-dropdown-menu" id="oc-shell-user" popover>
70
- <div class="oc-dropdown-label">serge@example.com</div>
71
- <a class="oc-dropdown-item" href="#">Profile</a>
72
- <a class="oc-dropdown-item" href="#">Settings</a>
73
- <div class="oc-dropdown-separator"></div>
74
- <a class="oc-dropdown-item" href="#">Log out</a>
75
- </div>
76
- </div>
77
- </header>
78
- <div class="oc-block-shell-breadcrumbs"><nav aria-label="Breadcrumb"><ol class="oc-breadcrumb"><li class="oc-breadcrumb-item"><a href="#">Home</a></li><li class="oc-breadcrumb-item"><a href="#">CRM</a></li><li class="oc-breadcrumb-item" aria-current="page">Contacts</li></ol></nav></div>
79
- <main class="oc-block-shell-content">
80
- <h1 class="oc-heading-title">Contacts</h1>
81
- <p class="oc-heading-description">Page content scrolls here.</p>
82
- </main>
83
- </div>
84
- </div>
1
+ <!-- OmniaUI block: app-shell - Application layout: sidebar, header bar, breadcrumb strip and scrolling content. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
+ Class API (modifiers are extra classes / attributes on the same element):
3
+ .oc-block-shell: Grid root. Height via --oc-block-shell-height (default 100dvh).
4
+ .oc-block-shell-toggle: Hidden checkbox that collapses the sidebar (label for it in the header bar)
5
+ .oc-sidebar: Sidebar component (first grid child)
6
+ .oc-block-shell-main: Column holding the header bar, breadcrumbs and content
7
+ .oc-block-shell-breadcrumbs: Strip under the header bar
8
+ .oc-block-shell-content: Scrolling page content (the only scroll container)
9
+ .oc-block-shell-menu-button: Shown below 48rem to open the sidebar sheet
10
+ Slots: sidebar, header bar (see App header), breadcrumbs, content (default)
11
+ -->
12
+ <div class="oc-block-shell" style="--oc-block-shell-height: 30rem">
13
+ <input class="oc-block-shell-toggle" type="checkbox" id="oc-shell-toggle" aria-label="Collapse sidebar">
14
+ <aside class="oc-sidebar " aria-label="Main navigation">
15
+ <div class="oc-sidebar-header">
16
+ <a class="oc-sidebar-menu-button oc-sidebar-menu-button--lg" href="#">
17
+ <svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg>
18
+ <span class="oc-sidebar-menu-label"><strong>OmniaDesk</strong></span>
19
+ </a>
20
+ </div>
21
+ <div class="oc-sidebar-content">
22
+ <div class="oc-sidebar-group">
23
+ <div class="oc-sidebar-group-label">Platform</div>
24
+ <ul class="oc-sidebar-menu">
25
+ <li><a class="oc-sidebar-menu-button" href="#" aria-current="page"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg><span class="oc-sidebar-menu-label">Dashboard</span></a></li>
26
+ <li><a class="oc-sidebar-menu-button" href="#"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="8" r="4"/><path d="M2 21c0-4 3-6 7-6s7 2 7 6"/></svg><span class="oc-sidebar-menu-label">Contacts</span><span class="oc-sidebar-menu-badge">12</span></a></li>
27
+ <li>
28
+ <details class="oc-sidebar-collapsible" open>
29
+ <summary class="oc-sidebar-menu-button"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2h8l5 5v15H6z"/><path d="M14 2v5h5"/></svg><span class="oc-sidebar-menu-label">Invoices</span></summary>
30
+ <ul class="oc-sidebar-menu-sub">
31
+ <li><a class="oc-sidebar-menu-button" href="#">Sales</a></li>
32
+ <li><a class="oc-sidebar-menu-button" href="#">Purchases</a></li>
33
+ </ul>
34
+ </details>
35
+ </li>
36
+ <li><a class="oc-sidebar-menu-button" href="#"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 20V10M10 20V4M16 20v-8M22 20H2"/></svg><span class="oc-sidebar-menu-label">Reports</span></a></li>
37
+ </ul>
38
+ </div>
39
+ <div class="oc-sidebar-separator"></div>
40
+ <div class="oc-sidebar-group">
41
+ <ul class="oc-sidebar-menu">
42
+ <li><a class="oc-sidebar-menu-button" href="#"><svg class="oc-sidebar-menu-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="3"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3M5 5l2 2M17 17l2 2M19 5l-2 2M7 17l-2 2"/></svg><span class="oc-sidebar-menu-label">Settings</span></a></li>
43
+ </ul>
44
+ </div>
45
+ </div>
46
+ <div class="oc-sidebar-footer">
47
+ <div class="oc-user">
48
+ <span class="oc-avatar oc-avatar--sm">SC</span>
49
+ <span class="oc-user-text"><span class="oc-user-name">Serge Cools</span><span class="oc-user-email">serge@example.com</span></span>
50
+ </div>
51
+ </div>
52
+ </aside>
53
+ <div class="oc-block-shell-main">
54
+ <header class="oc-block-appbar">
55
+ <label class="oc-btn oc-btn--ghost oc-btn--icon" for="oc-shell-toggle" title="Toggle sidebar"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg><span class="oc-visually-hidden">Toggle sidebar</span></label>
56
+ <nav class="oc-block-appbar-nav" aria-label="Module navigation">
57
+ <ul class="oc-navmenu">
58
+ <li><a class="oc-navmenu-link" href="#" aria-current="page">Contacts</a></li>
59
+ <li><a class="oc-navmenu-link" href="#">Companies</a></li>
60
+ <li><a class="oc-navmenu-link" href="#">Segments</a></li>
61
+ </ul>
62
+ </nav>
63
+ <div class="oc-block-appbar-actions">
64
+ <div class="oc-theme-switch" role="radiogroup" aria-label="Theme">
65
+ <label><input type="radio" name="oc-shell-theme" value="light"> Light</label>
66
+ <label><input type="radio" name="oc-shell-theme" value="dark"> Dark</label>
67
+ </div>
68
+ <button class="oc-btn oc-btn--ghost oc-btn--icon" type="button" popovertarget="oc-shell-user" aria-label="User menu"><span class="oc-avatar oc-avatar--sm">SC</span></button>
69
+ <div class="oc-dropdown-menu" id="oc-shell-user" popover>
70
+ <div class="oc-dropdown-label">serge@example.com</div>
71
+ <a class="oc-dropdown-item" href="#">Profile</a>
72
+ <a class="oc-dropdown-item" href="#">Settings</a>
73
+ <div class="oc-dropdown-separator"></div>
74
+ <a class="oc-dropdown-item" href="#">Log out</a>
75
+ </div>
76
+ </div>
77
+ </header>
78
+ <div class="oc-block-shell-breadcrumbs"><nav aria-label="Breadcrumb"><ol class="oc-breadcrumb"><li class="oc-breadcrumb-item"><a href="#">Home</a></li><li class="oc-breadcrumb-item"><a href="#">CRM</a></li><li class="oc-breadcrumb-item" aria-current="page">Contacts</li></ol></nav></div>
79
+ <main class="oc-block-shell-content">
80
+ <h1 class="oc-heading-title">Contacts</h1>
81
+ <p class="oc-heading-description">Page content scrolls here.</p>
82
+ </main>
83
+ </div>
84
+ </div>
@@ -1,45 +1,45 @@
1
- <!-- OmniaUI block: auth-split - Sign-in with a brand panel (logo, quote) next to the form. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
- Class API (modifiers are extra classes / attributes on the same element):
3
- .oc-block-authsplit: Grid root (two columns from 62rem)
4
- .oc-block-authsplit-brand: Left brand panel (primary gradient)
5
- .oc-block-authsplit-logo: Logo link
6
- .oc-block-authsplit-quote: Quote (blockquote with p + footer)
7
- .oc-block-authsplit-form: Right column that centers the card
8
- .oc-block-authsplit-card: Form width limiter
9
- .oc-block-authsplit-title / -subtitle: Heading and sub line
10
- .oc-block-authsplit-fields / -row: Field stack and a justified row (remember me / forgot password)
11
- Slots: logo, quote, title, subtitle, fields, submit, footer link
12
- -->
13
- <div class="oc-block-authsplit">
14
- <aside class="oc-block-authsplit-brand">
15
- <a class="oc-block-authsplit-logo" href="#"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg> OmniaDesk</a>
16
- <blockquote class="oc-block-authsplit-quote">
17
- <p>&ldquo;One calm place for contacts, invoices and the day-to-day work.&rdquo;</p>
18
- <footer>Serge Cools, founder</footer>
19
- </blockquote>
20
- </aside>
21
- <div class="oc-block-authsplit-form">
22
- <form class="oc-block-authsplit-card" action="#" method="post">
23
- <h1 class="oc-block-authsplit-title">Welcome back</h1>
24
- <p class="oc-block-authsplit-subtitle">Sign in to your workspace</p>
25
- <div class="oc-block-authsplit-fields">
26
- <div class="oc-field">
27
- <label class="oc-field-label" for="oc-authsplit-email">E-mail</label>
28
- <input class="oc-input" id="oc-authsplit-email" name="email" type="email" autocomplete="username" placeholder="name@company.com" required>
29
- </div>
30
- <div class="oc-field">
31
- <label class="oc-field-label" for="oc-authsplit-password">Password</label>
32
- <div class="oc-input-reveal">
33
- <input class="oc-input" id="oc-authsplit-password" name="password" type="password" autocomplete="current-password" required>
34
- <button class="oc-input-reveal-button" type="button" aria-pressed="false" aria-label="Toggle password visibility">Show</button>
35
- </div>
36
- </div>
37
- <div class="oc-block-authsplit-row">
38
- <label><input class="oc-checkbox" type="checkbox" name="remember"> Remember me</label>
39
- <a class="oc-link" href="#">Forgot password?</a>
40
- </div>
41
- <button class="oc-btn" type="submit" style="width:100%">Sign in</button>
42
- </div>
43
- </form>
44
- </div>
45
- </div>
1
+ <!-- OmniaUI block: auth-split - Sign-in with a brand panel (logo, quote) next to the form. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
+ Class API (modifiers are extra classes / attributes on the same element):
3
+ .oc-block-authsplit: Grid root (two columns from 62rem)
4
+ .oc-block-authsplit-brand: Left brand panel (primary gradient). Modifier --photo with style="--oc-authsplit-photo: url(…)" for a photo under a dark layer
5
+ .oc-block-authsplit-logo: Logo link
6
+ .oc-block-authsplit-quote: Quote (blockquote with p + footer)
7
+ .oc-block-authsplit-form: Right column that centers the card
8
+ .oc-block-authsplit-card: Form width limiter
9
+ .oc-block-authsplit-title / -subtitle: Heading and sub line
10
+ .oc-block-authsplit-fields / -row: Field stack and a justified row (remember me / forgot password)
11
+ Slots: logo, quote, title, subtitle, fields, submit, footer link
12
+ -->
13
+ <div class="oc-block-authsplit">
14
+ <aside class="oc-block-authsplit-brand">
15
+ <a class="oc-block-authsplit-logo" href="#"><svg class="" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8v10a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg> OmniaDesk</a>
16
+ <blockquote class="oc-block-authsplit-quote">
17
+ <p>&ldquo;One calm place for contacts, invoices and the day-to-day work.&rdquo;</p>
18
+ <footer>Serge Cools, founder</footer>
19
+ </blockquote>
20
+ </aside>
21
+ <div class="oc-block-authsplit-form">
22
+ <form class="oc-block-authsplit-card" action="#" method="post">
23
+ <h1 class="oc-block-authsplit-title">Welcome back</h1>
24
+ <p class="oc-block-authsplit-subtitle">Sign in to your workspace</p>
25
+ <div class="oc-block-authsplit-fields">
26
+ <div class="oc-field">
27
+ <label class="oc-field-label" for="oc-authsplit-email">E-mail</label>
28
+ <input class="oc-input" id="oc-authsplit-email" name="email" type="email" autocomplete="username" placeholder="name@company.com" required>
29
+ </div>
30
+ <div class="oc-field">
31
+ <label class="oc-field-label" for="oc-authsplit-password">Password</label>
32
+ <div class="oc-input-reveal">
33
+ <input class="oc-input" id="oc-authsplit-password" name="password" type="password" autocomplete="current-password" required>
34
+ <button class="oc-input-reveal-button" type="button" aria-pressed="false" aria-label="Toggle password visibility">Show</button>
35
+ </div>
36
+ </div>
37
+ <div class="oc-block-authsplit-row">
38
+ <label><input class="oc-checkbox" type="checkbox" name="remember"> Remember me</label>
39
+ <a class="oc-link" href="#">Forgot password?</a>
40
+ </div>
41
+ <button class="oc-btn" type="submit" style="width:100%">Sign in</button>
42
+ </div>
43
+ </form>
44
+ </div>
45
+ </div>
package/blocks/auth.html CHANGED
@@ -1,21 +1,21 @@
1
- <!-- OmniaUI block: auth — Sign-in card. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS. -->
2
- <div class="oc-block-auth">
3
- <div class="oc-block-auth-card">
4
- <h2>Sign in</h2>
5
- <p class="oc-block-subtitle">Enter your credentials to continue</p>
6
- <div class="oc-form-group">
7
- <label class="oc-label">Email</label>
8
- <input class="oc-input" type="email" placeholder="name@company.com">
9
- </div>
10
- <div class="oc-form-group">
11
- <label class="oc-label">Password</label>
12
- <input class="oc-input" type="password" placeholder="********">
13
- </div>
14
- <button class="oc-btn" style="width:100%;">Sign in</button>
15
- <div class="oc-block-auth-divider">or continue with</div>
16
- <button class="oc-btn oc-btn--outline" style="width:100%;">Sign in with Google</button>
17
- </div>
18
- <div class="oc-block-auth-footer">
19
- Don't have an account? <a href="#">Sign up</a>
20
- </div>
21
- </div>
1
+ <!-- OmniaUI block: auth — Sign-in card. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS. -->
2
+ <div class="oc-block-auth">
3
+ <div class="oc-block-auth-card">
4
+ <h2>Sign in</h2>
5
+ <p class="oc-block-subtitle">Enter your credentials to continue</p>
6
+ <div class="oc-form-group">
7
+ <label class="oc-label">Email</label>
8
+ <input class="oc-input" type="email" placeholder="name@company.com">
9
+ </div>
10
+ <div class="oc-form-group">
11
+ <label class="oc-label">Password</label>
12
+ <input class="oc-input" type="password" placeholder="********">
13
+ </div>
14
+ <button class="oc-btn" style="width:100%;">Sign in</button>
15
+ <div class="oc-block-auth-divider">or continue with</div>
16
+ <button class="oc-btn oc-btn--outline" style="width:100%;">Sign in with Google</button>
17
+ </div>
18
+ <div class="oc-block-auth-footer">
19
+ Don't have an account? <a href="#">Sign up</a>
20
+ </div>
21
+ </div>
@@ -1,38 +1,38 @@
1
- <!-- OmniaUI block: contact-grid - Contact section with info cards for e-mail, phone, address and opening hours. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
- File: packages/blocks/blocks/contact-grid.html | Map: section.oc-block-contact -> head -> grid -> cards (mark, title, lines)
3
- Class API: .oc-block-contact (modifier --plain: no card frames), -head, -heading, -lead, -grid, -card (article or address),
4
- -title, -line (p or a). Cards start with a product mark (.oc-product-mark--sm .oc-product-mark--soft).
5
- -->
6
- <section class="oc-block-contact" aria-labelledby="oc-contact-title">
7
- <div class="oc-block-contact-head">
8
- <p class="oc-eyebrow">Contact</p>
9
- <h2 class="oc-block-contact-heading" id="oc-contact-title">Let's talk about your project</h2>
10
- <p class="oc-block-contact-lead">Mail, call or drop by. We answer every question within one working day.</p>
11
- </div>
12
- <div class="oc-block-contact-grid">
13
- <article class="oc-block-contact-card">
14
- <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--blue" aria-hidden="true">&#9993;</span>
15
- <h3 class="oc-block-contact-title">E-mail</h3>
16
- <a class="oc-block-contact-line" href="mailto:hello@example.com">hello@example.com</a>
17
- <p class="oc-block-contact-line">For quotes and questions.</p>
18
- </article>
19
- <article class="oc-block-contact-card">
20
- <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--green" aria-hidden="true">&#9742;</span>
21
- <h3 class="oc-block-contact-title">Phone</h3>
22
- <a class="oc-block-contact-line" href="tel:+3230000000">+32 3 000 00 00</a>
23
- <p class="oc-block-contact-line">Monday to Friday.</p>
24
- </article>
25
- <address class="oc-block-contact-card">
26
- <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--orange" aria-hidden="true">&#9873;</span>
27
- <span class="oc-block-contact-title">Office</span>
28
- <span class="oc-block-contact-line">Acme Software</span>
29
- <span class="oc-block-contact-line">Main Street 1, 2000 Antwerp</span>
30
- </address>
31
- <article class="oc-block-contact-card">
32
- <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--violet" aria-hidden="true">&#9719;</span>
33
- <h3 class="oc-block-contact-title">Opening hours</h3>
34
- <p class="oc-block-contact-line">Mon&ndash;Fri: 9:00 &ndash; 17:30</p>
35
- <p class="oc-block-contact-line">Sat&ndash;Sun: closed</p>
36
- </article>
37
- </div>
38
- </section>
1
+ <!-- OmniaUI block: contact-grid - Contact section with info cards for e-mail, phone, address and opening hours. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS.
2
+ File: packages/blocks/blocks/contact-grid.html | Map: section.oc-block-contact -> head -> grid -> cards (mark, title, lines)
3
+ Class API: .oc-block-contact (modifier --plain: no card frames), -head, -heading, -lead, -grid, -card (article or address),
4
+ -title, -line (p or a). Cards start with a product mark (.oc-product-mark--sm .oc-product-mark--soft).
5
+ -->
6
+ <section class="oc-block-contact" aria-labelledby="oc-contact-title">
7
+ <div class="oc-block-contact-head">
8
+ <p class="oc-eyebrow">Contact</p>
9
+ <h2 class="oc-block-contact-heading" id="oc-contact-title">Let's talk about your project</h2>
10
+ <p class="oc-block-contact-lead">Mail, call or drop by. We answer every question within one working day.</p>
11
+ </div>
12
+ <div class="oc-block-contact-grid">
13
+ <article class="oc-block-contact-card">
14
+ <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--blue" aria-hidden="true">&#9993;</span>
15
+ <h3 class="oc-block-contact-title">E-mail</h3>
16
+ <a class="oc-block-contact-line" href="mailto:hello@example.com">hello@example.com</a>
17
+ <p class="oc-block-contact-line">For quotes and questions.</p>
18
+ </article>
19
+ <article class="oc-block-contact-card">
20
+ <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--green" aria-hidden="true">&#9742;</span>
21
+ <h3 class="oc-block-contact-title">Phone</h3>
22
+ <a class="oc-block-contact-line" href="tel:+3230000000">+32 3 000 00 00</a>
23
+ <p class="oc-block-contact-line">Monday to Friday.</p>
24
+ </article>
25
+ <address class="oc-block-contact-card">
26
+ <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--orange" aria-hidden="true">&#9873;</span>
27
+ <span class="oc-block-contact-title">Office</span>
28
+ <span class="oc-block-contact-line">Acme Software</span>
29
+ <span class="oc-block-contact-line">Main Street 1, 2000 Antwerp</span>
30
+ </address>
31
+ <article class="oc-block-contact-card">
32
+ <span class="oc-product-mark oc-product-mark--sm oc-product-mark--soft oc-accent--violet" aria-hidden="true">&#9719;</span>
33
+ <h3 class="oc-block-contact-title">Opening hours</h3>
34
+ <p class="oc-block-contact-line">Mon&ndash;Fri: 9:00 &ndash; 17:30</p>
35
+ <p class="oc-block-contact-line">Sat&ndash;Sun: closed</p>
36
+ </article>
37
+ </div>
38
+ </section>
package/blocks/cta.html CHANGED
@@ -1,8 +1,8 @@
1
- <!-- OmniaUI block: cta — Call to action banner. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS. -->
2
- <div class="oc-block-cta">
3
- <h2>Ready to start building?</h2>
4
- <p>Get OmniaCSS and ship your next project faster.</p>
5
- <div class="oc-block-hero-actions">
6
- <button class="oc-btn oc-btn--lg">Get started free</button>
7
- </div>
8
- </div>
1
+ <!-- OmniaUI block: cta — Call to action banner. Needs @birdycom/omniaui-blocks + @birdycom/omniaui CSS. -->
2
+ <div class="oc-block-cta">
3
+ <h2>Ready to start building?</h2>
4
+ <p>Get OmniaCSS and ship your next project faster.</p>
5
+ <div class="oc-block-hero-actions">
6
+ <button class="oc-btn oc-btn--lg">Get started free</button>
7
+ </div>
8
+ </div>