@birdycom/omniaui 0.11.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +21 -21
- package/bin/lib/add.mjs +126 -126
- package/bin/lib/catalog.mjs +169 -169
- package/bin/lib/project.mjs +90 -90
- package/bin/omniaui.mjs +69 -69
- package/dist/code-block.css +25 -25
- package/dist/components-extra.css +916 -914
- package/dist/components.css +6559 -6469
- package/dist/components.min.css +1 -1
- package/dist/data-table.d.ts +9 -9
- package/dist/data-table.js +505 -505
- package/dist/docs-ui.css +267 -265
- package/dist/oc-theme.css +69 -69
- package/dist/parts/app-accordion-accent.css +60 -60
- package/dist/parts/app-alpha-tabs.css +68 -68
- package/dist/parts/app-busy-overlay.css +25 -25
- package/dist/parts/app-column-menu.css +85 -85
- package/dist/parts/app-confirm-dialog.css +70 -70
- package/dist/parts/app-cookie-consent.css +63 -63
- package/dist/parts/app-data-table.css +174 -174
- package/dist/parts/app-greeting.css +47 -47
- package/dist/parts/app-list-toolbar.css +81 -81
- package/dist/parts/app-page-header.css +54 -54
- package/dist/parts/app-severity-card.css +91 -91
- package/dist/parts/app-sidebar-dark.css +15 -15
- package/dist/parts/app-sortable-row.css +52 -52
- package/dist/parts/app-stat-card.css +68 -68
- package/dist/parts/app-table-actions.css +71 -71
- package/dist/parts/app-table-compact.css +54 -54
- package/dist/parts/app-top-progress.css +68 -68
- package/dist/parts/app-tree.css +104 -104
- package/dist/parts/app-upgrade-banner.css +90 -90
- package/dist/parts/app-version-banner.css +80 -80
- package/dist/parts/data-chart-line.css +167 -167
- package/dist/parts/forms-affix-input.css +75 -75
- package/dist/parts/forms-barcode-input.css +75 -75
- package/dist/parts/forms-chip-filter.css +91 -91
- package/dist/parts/forms-color-select.css +97 -89
- package/dist/parts/forms-decimal-input.css +51 -51
- package/dist/parts/forms-filter-counts.css +94 -94
- package/dist/parts/forms-language-select.css +89 -76
- package/dist/parts/forms-number-input.css +98 -95
- package/dist/parts/forms-password-requirements.css +55 -55
- package/dist/parts/forms-phone-input.css +85 -85
- package/dist/parts/forms-time-input.css +74 -74
- package/dist/parts/forms-toggle-field.css +69 -69
- package/dist/parts/media-art.css +21 -21
- package/dist/parts/media-attachment.css +160 -160
- package/dist/parts/media-browser-frame.css +73 -73
- package/dist/parts/media-card.css +83 -83
- package/dist/parts/media-chat-composer.css +90 -90
- package/dist/parts/media-doc-viewer.css +151 -151
- package/dist/parts/media-emoji-picker.css +88 -88
- package/dist/parts/media-entity-card.css +52 -52
- package/dist/parts/media-flip-card.css +78 -78
- package/dist/parts/media-image-zoom.css +68 -68
- package/dist/parts/media-lightbox.css +131 -131
- package/dist/parts/media-message-thread.css +136 -136
- package/dist/parts/media-message.css +160 -160
- package/dist/parts/media-row.css +78 -78
- package/dist/parts/media-stack-card.css +82 -82
- package/dist/parts/media-terminal-log.css +76 -76
- package/dist/parts/media-thumb.css +71 -71
- package/dist/parts/site-fact-list.css +25 -25
- package/dist/parts/site-link-arrow.css +34 -34
- package/dist/parts/site-marquee.css +34 -34
- package/dist/parts/site-next-teaser.css +75 -75
- package/dist/parts/site-price-card.css +91 -75
- package/dist/parts/site-product-mark.css +66 -66
- package/dist/parts/site-project-card.css +111 -111
- package/dist/parts/site-prose.css +124 -124
- package/dist/parts/site-stack-list.css +48 -48
- package/dist/parts/site-timeline.css +54 -54
- package/dist/showcase.css +404 -404
- package/package.json +69 -69
- package/snippets/accordion-accent.html +24 -24
- package/snippets/accordion.html +11 -11
- package/snippets/affix-input.html +30 -30
- package/snippets/alert-dialog.html +22 -22
- package/snippets/alert.html +5 -5
- package/snippets/alpha-tabs.html +37 -37
- package/snippets/aspect-ratio.html +15 -15
- package/snippets/attachment.html +43 -43
- package/snippets/avatar.html +6 -6
- package/snippets/back-link.html +5 -5
- package/snippets/badge.html +5 -5
- package/snippets/barcode-input.html +18 -18
- package/snippets/breadcrumb.html +6 -6
- package/snippets/browser-frame.html +18 -18
- package/snippets/busy-overlay.html +31 -31
- package/snippets/button-group.html +21 -21
- package/snippets/button.html +8 -8
- package/snippets/calendar.html +43 -43
- package/snippets/card.html +17 -17
- package/snippets/carousel.html +21 -21
- package/snippets/chart-line.html +46 -46
- package/snippets/chart.html +27 -27
- package/snippets/chat-composer.html +21 -21
- package/snippets/checkbox.html +5 -5
- package/snippets/checklist.html +23 -23
- package/snippets/chip-filter.html +14 -14
- package/snippets/code-window.html +20 -20
- package/snippets/collapsible.html +19 -19
- package/snippets/color-field.html +13 -13
- package/snippets/color-select.html +18 -18
- package/snippets/column-menu.html +38 -38
- package/snippets/combobox.html +19 -19
- package/snippets/command.html +24 -24
- package/snippets/confirm-dialog.html +32 -32
- package/snippets/context-menu.html +25 -25
- package/snippets/cookie-consent.html +70 -70
- package/snippets/copy-field.html +19 -19
- package/snippets/counter.html +2 -2
- package/snippets/data-table.html +151 -151
- package/snippets/date-picker.html +32 -32
- package/snippets/decimal-input.html +20 -20
- package/snippets/definition-list.html +20 -20
- package/snippets/demo-panel.html +18 -18
- package/snippets/doc-viewer.html +58 -58
- package/snippets/drawer.html +30 -30
- package/snippets/dropdown-menu.html +27 -27
- package/snippets/dropdown.html +9 -9
- package/snippets/dropzone.html +13 -13
- package/snippets/emoji-picker.html +51 -51
- package/snippets/empty-state.html +17 -17
- package/snippets/entity-card.html +26 -26
- package/snippets/expandable-table.html +26 -26
- package/snippets/fact-list.html +14 -14
- package/snippets/filter-counts.html +30 -30
- package/snippets/flip-card.html +22 -22
- package/snippets/form-field.html +6 -6
- package/snippets/greeting.html +22 -22
- package/snippets/heading.html +14 -14
- package/snippets/hover-card.html +18 -18
- package/snippets/image-zoom.html +30 -30
- package/snippets/input-group.html +10 -10
- package/snippets/input.html +5 -5
- package/snippets/item.html +26 -26
- package/snippets/kbd.html +13 -13
- package/snippets/label.html +9 -9
- package/snippets/language-select.html +26 -26
- package/snippets/launcher-card.html +14 -14
- package/snippets/lightbox.html +50 -50
- package/snippets/link-arrow.html +10 -10
- package/snippets/list-toolbar.html +33 -33
- package/snippets/marquee.html +15 -15
- package/snippets/media-card.html +28 -28
- package/snippets/media-row.html +21 -21
- package/snippets/media-thumb.html +12 -12
- package/snippets/menubar.html +30 -30
- package/snippets/message-thread.html +123 -123
- package/snippets/message.html +51 -51
- package/snippets/modal.html +15 -15
- package/snippets/native-select.html +15 -15
- package/snippets/navmenu.html +23 -23
- package/snippets/next-teaser.html +15 -15
- package/snippets/number-input.html +27 -27
- package/snippets/otp-input.html +9 -9
- package/snippets/page-header.html +24 -24
- package/snippets/pagination.html +6 -6
- package/snippets/password-input.html +24 -24
- package/snippets/password-requirements.html +30 -30
- package/snippets/phone-input.html +22 -22
- package/snippets/popover.html +15 -15
- package/snippets/price-card.html +34 -34
- package/snippets/product-mark.html +13 -13
- package/snippets/progress.html +4 -4
- package/snippets/project-card.html +23 -23
- package/snippets/prose.html +54 -54
- package/snippets/radio.html +17 -17
- package/snippets/recovery-codes.html +20 -20
- package/snippets/resizable.html +16 -16
- package/snippets/scroll-area.html +20 -20
- package/snippets/search.html +8 -8
- package/snippets/segmented.html +11 -11
- package/snippets/select.html +7 -7
- package/snippets/separator.html +15 -15
- package/snippets/severity-card.html +35 -35
- package/snippets/sheet.html +32 -32
- package/snippets/sidebar-docs.html +24 -24
- package/snippets/sidebar.html +55 -55
- package/snippets/site-footer.html +6 -6
- package/snippets/site-header.html +26 -26
- package/snippets/skeleton.html +4 -4
- package/snippets/slider.html +17 -17
- package/snippets/sortable-row.html +31 -31
- package/snippets/spinner.html +14 -14
- package/snippets/stack-card.html +17 -17
- package/snippets/stack-list.html +16 -16
- package/snippets/stat-card.html +24 -24
- package/snippets/stepper.html +13 -13
- package/snippets/switch.html +6 -6
- package/snippets/table-actions.html +39 -39
- package/snippets/table-compact.html +24 -24
- package/snippets/table.html +29 -29
- package/snippets/tabs.html +9 -9
- package/snippets/tag-input.html +60 -17
- package/snippets/terminal-log.html +23 -23
- package/snippets/textarea.html +3 -3
- package/snippets/theme-switch.html +6 -6
- package/snippets/time-input.html +26 -26
- package/snippets/timeline.html +28 -28
- package/snippets/toast-stack.html +10 -10
- package/snippets/toast.html +36 -36
- package/snippets/toc.html +13 -13
- package/snippets/toggle-field.html +20 -20
- package/snippets/toggle.html +22 -22
- package/snippets/tooltip.html +4 -4
- package/snippets/top-progress.html +12 -12
- package/snippets/tree.html +38 -38
- package/snippets/upgrade-banner.html +28 -28
- package/snippets/user.html +15 -15
- package/snippets/version-banner.html +15 -15
package/snippets/toggle.html
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
<!-- OmniaUI component: toggle - Toggle and toggle group: pressed state on checkbox/radio or aria-pressed. Needs @birdycom/omniaui CSS.
|
|
2
|
-
Class API (modifiers are extra classes / attributes on the same element):
|
|
3
|
-
.oc-toggle: label (around input) or button. On state: input:checked, [aria-pressed=true], [data-state=on]. Variants: --outline. Sizes: --sm, --lg. --icon: square
|
|
4
|
-
.oc-toggle-group: connected toggles (radio inputs = single, checkbox inputs = multiple). Modifier: --spaced
|
|
5
|
-
-->
|
|
6
|
-
<div class="oc-toggle-group" role="group" aria-label="Text formatting">
|
|
7
|
-
<label class="oc-toggle oc-toggle--outline oc-toggle--icon" title="Bold"><input type="checkbox" name="fmt" value="bold" aria-label="Bold" checked><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 4h8a4 4 0 0 1 0 8H6zM6 12h9a4 4 0 0 1 0 8H6z"/></svg></label>
|
|
8
|
-
<label class="oc-toggle oc-toggle--outline oc-toggle--icon" title="Italic"><input type="checkbox" name="fmt" value="italic" aria-label="Italic"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 4h-9M14 20H5M15 4 9 20"/></svg></label>
|
|
9
|
-
<label class="oc-toggle oc-toggle--outline oc-toggle--icon" title="Underline"><input type="checkbox" name="fmt" value="underline" aria-label="Underline"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 4v6a6 6 0 0 0 12 0V4M4 21h16"/></svg></label>
|
|
10
|
-
</div>
|
|
11
|
-
|
|
12
|
-
<div class="oc-toggle-group" role="radiogroup" aria-label="Alignment">
|
|
13
|
-
<label class="oc-toggle oc-toggle--icon"><input type="radio" name="oc-align" value="left" aria-label="Left" checked><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h10M4 18h14"/></svg></label>
|
|
14
|
-
<label class="oc-toggle oc-toggle--icon"><input type="radio" name="oc-align" value="center" aria-label="Center"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M7 12h10M5 18h14"/></svg></label>
|
|
15
|
-
<label class="oc-toggle oc-toggle--icon"><input type="radio" name="oc-align" value="right" aria-label="Right"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M10 12h10M6 18h14"/></svg></label>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<label class="oc-toggle oc-toggle--outline"><input type="checkbox"> Italic</label>
|
|
19
|
-
<label class="oc-toggle oc-toggle--outline oc-toggle--sm"><input type="checkbox" checked> Small</label>
|
|
20
|
-
<label class="oc-toggle oc-toggle--outline oc-toggle--lg"><input type="checkbox"> Large</label>
|
|
21
|
-
<button class="oc-toggle oc-toggle--outline" type="button" aria-pressed="true">Pressed button</button>
|
|
22
|
-
<div class="oc-toggle-group oc-toggle-group--spaced" role="group" aria-label="Spaced"><label class="oc-toggle oc-toggle--outline"><input type="checkbox" checked> A</label><label class="oc-toggle oc-toggle--outline"><input type="checkbox"> B</label></div>
|
|
1
|
+
<!-- OmniaUI component: toggle - Toggle and toggle group: pressed state on checkbox/radio or aria-pressed. Needs @birdycom/omniaui CSS.
|
|
2
|
+
Class API (modifiers are extra classes / attributes on the same element):
|
|
3
|
+
.oc-toggle: label (around input) or button. On state: input:checked, [aria-pressed=true], [data-state=on]. Variants: --outline. Sizes: --sm, --lg. --icon: square
|
|
4
|
+
.oc-toggle-group: connected toggles (radio inputs = single, checkbox inputs = multiple). Modifier: --spaced
|
|
5
|
+
-->
|
|
6
|
+
<div class="oc-toggle-group" role="group" aria-label="Text formatting">
|
|
7
|
+
<label class="oc-toggle oc-toggle--outline oc-toggle--icon" title="Bold"><input type="checkbox" name="fmt" value="bold" aria-label="Bold" checked><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 4h8a4 4 0 0 1 0 8H6zM6 12h9a4 4 0 0 1 0 8H6z"/></svg></label>
|
|
8
|
+
<label class="oc-toggle oc-toggle--outline oc-toggle--icon" title="Italic"><input type="checkbox" name="fmt" value="italic" aria-label="Italic"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M19 4h-9M14 20H5M15 4 9 20"/></svg></label>
|
|
9
|
+
<label class="oc-toggle oc-toggle--outline oc-toggle--icon" title="Underline"><input type="checkbox" name="fmt" value="underline" aria-label="Underline"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 4v6a6 6 0 0 0 12 0V4M4 21h16"/></svg></label>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<div class="oc-toggle-group" role="radiogroup" aria-label="Alignment">
|
|
13
|
+
<label class="oc-toggle oc-toggle--icon"><input type="radio" name="oc-align" value="left" aria-label="Left" checked><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h10M4 18h14"/></svg></label>
|
|
14
|
+
<label class="oc-toggle oc-toggle--icon"><input type="radio" name="oc-align" value="center" aria-label="Center"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M7 12h10M5 18h14"/></svg></label>
|
|
15
|
+
<label class="oc-toggle oc-toggle--icon"><input type="radio" name="oc-align" value="right" aria-label="Right"><svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M10 12h10M6 18h14"/></svg></label>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<label class="oc-toggle oc-toggle--outline"><input type="checkbox"> Italic</label>
|
|
19
|
+
<label class="oc-toggle oc-toggle--outline oc-toggle--sm"><input type="checkbox" checked> Small</label>
|
|
20
|
+
<label class="oc-toggle oc-toggle--outline oc-toggle--lg"><input type="checkbox"> Large</label>
|
|
21
|
+
<button class="oc-toggle oc-toggle--outline" type="button" aria-pressed="true">Pressed button</button>
|
|
22
|
+
<div class="oc-toggle-group oc-toggle-group--spaced" role="group" aria-label="Spaced"><label class="oc-toggle oc-toggle--outline"><input type="checkbox" checked> A</label><label class="oc-toggle oc-toggle--outline"><input type="checkbox"> B</label></div>
|
package/snippets/tooltip.html
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- OmniaUI component: tooltip — Tooltip (CSS only). Needs @birdycom/omniaui CSS. -->
|
|
2
|
-
<span class="oc-tooltip" data-tooltip="Saved to your library">
|
|
3
|
-
<button class="oc-btn oc-btn--outline">Hover me</button>
|
|
4
|
-
</span>
|
|
1
|
+
<!-- OmniaUI component: tooltip — Tooltip (CSS only). Needs @birdycom/omniaui CSS. -->
|
|
2
|
+
<span class="oc-tooltip" data-tooltip="Saved to your library">
|
|
3
|
+
<button class="oc-btn oc-btn--outline">Hover me</button>
|
|
4
|
+
</span>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<!-- OmniaUI component: top-progress - Thin page-top loading bar on a native progress element (indeterminate or with a value). Needs @birdycom/omniaui CSS.
|
|
2
|
-
File: packages/ui/snippets/top-progress.html | Map: indeterminate bar -> determinate bar (value) -> static bar in a card
|
|
3
|
-
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
-
progress.oc-top-progress: Fixed to the top of the window. Without value = indeterminate (sliding segment); value + max = determinate.
|
|
5
|
-
Modifiers: --success, --warning, --danger, --brand (colors), --lg (4px), --static (in the normal flow, e.g. inside a card).
|
|
6
|
-
States: .is-done (fades out), hidden (removed)
|
|
7
|
-
Custom properties: --oc-top-progress-color, --oc-top-progress-height
|
|
8
|
-
Slots: none (use aria-label for the screen reader name)
|
|
9
|
-
-->
|
|
10
|
-
<progress class="oc-top-progress" aria-label="Loading page"></progress>
|
|
11
|
-
|
|
12
|
-
<progress class="oc-top-progress oc-top-progress--static" value="40" max="100" aria-label="Uploading, 40 percent"></progress>
|
|
1
|
+
<!-- OmniaUI component: top-progress - Thin page-top loading bar on a native progress element (indeterminate or with a value). Needs @birdycom/omniaui CSS.
|
|
2
|
+
File: packages/ui/snippets/top-progress.html | Map: indeterminate bar -> determinate bar (value) -> static bar in a card
|
|
3
|
+
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
+
progress.oc-top-progress: Fixed to the top of the window. Without value = indeterminate (sliding segment); value + max = determinate.
|
|
5
|
+
Modifiers: --success, --warning, --danger, --brand (colors), --lg (4px), --static (in the normal flow, e.g. inside a card).
|
|
6
|
+
States: .is-done (fades out), hidden (removed)
|
|
7
|
+
Custom properties: --oc-top-progress-color, --oc-top-progress-height
|
|
8
|
+
Slots: none (use aria-label for the screen reader name)
|
|
9
|
+
-->
|
|
10
|
+
<progress class="oc-top-progress" aria-label="Loading page"></progress>
|
|
11
|
+
|
|
12
|
+
<progress class="oc-top-progress oc-top-progress--static" value="40" max="100" aria-label="Uploading, 40 percent"></progress>
|
package/snippets/tree.html
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
<!-- OmniaUI component: tree - Nested tree list on details / summary with a sticky action column - no JavaScript. Needs @birdycom/omniaui CSS.
|
|
2
|
-
File: packages/ui/snippets/tree.html | Map: tree box -> head row -> list -> folder (details) with child list -> leaf rows
|
|
3
|
-
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
-
.oc-tree: Scroll box (card frame). Modifiers: --flush (no frame), --quiet (actions show on hover / focus). Height: --oc-tree-height.
|
|
5
|
-
.oc-tree-head: Optional root row that sticks to the top
|
|
6
|
-
ul.oc-tree-list: List; a nested list indents one step (--oc-tree-indent)
|
|
7
|
-
details.oc-tree-node: Folder (open = expanded); summary.oc-tree-row is its row
|
|
8
|
-
.oc-tree-row: Row (summary for a folder, div for a leaf). States: aria-current="true" on the row or its label link / .is-selected, .is-muted
|
|
9
|
-
.oc-tree-icon / -label / -count: Icon, name (never wraps), item count
|
|
10
|
-
.oc-tree-actions: Action buttons, pinned to the end edge (position: sticky)
|
|
11
|
-
Slots: head, rows (icon, label, count, actions), nested lists
|
|
12
|
-
-->
|
|
13
|
-
<div class="oc-tree" aria-label="Projects" style="--oc-tree-height:18rem">
|
|
14
|
-
<div class="oc-tree-row oc-tree-head"><span class="oc-tree-label">All projects</span><span class="oc-tree-actions"><button class="oc-btn oc-btn--ghost oc-btn--xs" type="button">New</button></span></div>
|
|
15
|
-
<ul class="oc-tree-list">
|
|
16
|
-
<li>
|
|
17
|
-
<details class="oc-tree-node" open>
|
|
18
|
-
<summary class="oc-tree-row">
|
|
19
|
-
<span class="oc-tree-icon" aria-hidden="true"><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 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span>
|
|
20
|
-
<span class="oc-tree-label">Kitchen renovation - Main street 12</span><span class="oc-tree-count">3</span>
|
|
21
|
-
<span class="oc-tree-actions"><button class="oc-table-actions-icon" type="button" aria-label="Add to Kitchen renovation" title="Add">+</button></span>
|
|
22
|
-
</summary>
|
|
23
|
-
<ul class="oc-tree-list">
|
|
24
|
-
<li><div class="oc-tree-row"><span class="oc-tree-icon" aria-hidden="true"><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="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg></span><a class="oc-tree-label" href="#" aria-current="true">Quote v2.pdf</a><span class="oc-tree-actions"><button class="oc-table-actions-icon" type="button" aria-label="Rename Quote v2.pdf" title="Rename">✎</button></span></div></li>
|
|
25
|
-
<li><div class="oc-tree-row"><span class="oc-tree-icon" aria-hidden="true"><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="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg></span><a class="oc-tree-label" href="#">Floor plan with very long file name that scrolls.dwg</a><span class="oc-tree-actions"><button class="oc-table-actions-icon" type="button" aria-label="Rename Floor plan" title="Rename">✎</button></span></div></li>
|
|
26
|
-
</ul>
|
|
27
|
-
</details>
|
|
28
|
-
</li>
|
|
29
|
-
<li>
|
|
30
|
-
<details class="oc-tree-node">
|
|
31
|
-
<summary class="oc-tree-row"><span class="oc-tree-icon" aria-hidden="true"><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 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span><span class="oc-tree-label">Bathroom</span><span class="oc-tree-count">1</span></summary>
|
|
32
|
-
<ul class="oc-tree-list">
|
|
33
|
-
<li><div class="oc-tree-row is-muted"><span class="oc-tree-label">Photos (archived)</span></div></li>
|
|
34
|
-
</ul>
|
|
35
|
-
</details>
|
|
36
|
-
</li>
|
|
37
|
-
</ul>
|
|
38
|
-
</div>
|
|
1
|
+
<!-- OmniaUI component: tree - Nested tree list on details / summary with a sticky action column - no JavaScript. Needs @birdycom/omniaui CSS.
|
|
2
|
+
File: packages/ui/snippets/tree.html | Map: tree box -> head row -> list -> folder (details) with child list -> leaf rows
|
|
3
|
+
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
+
.oc-tree: Scroll box (card frame). Modifiers: --flush (no frame), --quiet (actions show on hover / focus). Height: --oc-tree-height.
|
|
5
|
+
.oc-tree-head: Optional root row that sticks to the top
|
|
6
|
+
ul.oc-tree-list: List; a nested list indents one step (--oc-tree-indent)
|
|
7
|
+
details.oc-tree-node: Folder (open = expanded); summary.oc-tree-row is its row
|
|
8
|
+
.oc-tree-row: Row (summary for a folder, div for a leaf). States: aria-current="true" on the row or its label link / .is-selected, .is-muted
|
|
9
|
+
.oc-tree-icon / -label / -count: Icon, name (never wraps), item count
|
|
10
|
+
.oc-tree-actions: Action buttons, pinned to the end edge (position: sticky)
|
|
11
|
+
Slots: head, rows (icon, label, count, actions), nested lists
|
|
12
|
+
-->
|
|
13
|
+
<div class="oc-tree" aria-label="Projects" style="--oc-tree-height:18rem">
|
|
14
|
+
<div class="oc-tree-row oc-tree-head"><span class="oc-tree-label">All projects</span><span class="oc-tree-actions"><button class="oc-btn oc-btn--ghost oc-btn--xs" type="button">New</button></span></div>
|
|
15
|
+
<ul class="oc-tree-list">
|
|
16
|
+
<li>
|
|
17
|
+
<details class="oc-tree-node" open>
|
|
18
|
+
<summary class="oc-tree-row">
|
|
19
|
+
<span class="oc-tree-icon" aria-hidden="true"><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 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span>
|
|
20
|
+
<span class="oc-tree-label">Kitchen renovation - Main street 12</span><span class="oc-tree-count">3</span>
|
|
21
|
+
<span class="oc-tree-actions"><button class="oc-table-actions-icon" type="button" aria-label="Add to Kitchen renovation" title="Add">+</button></span>
|
|
22
|
+
</summary>
|
|
23
|
+
<ul class="oc-tree-list">
|
|
24
|
+
<li><div class="oc-tree-row"><span class="oc-tree-icon" aria-hidden="true"><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="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg></span><a class="oc-tree-label" href="#" aria-current="true">Quote v2.pdf</a><span class="oc-tree-actions"><button class="oc-table-actions-icon" type="button" aria-label="Rename Quote v2.pdf" title="Rename">✎</button></span></div></li>
|
|
25
|
+
<li><div class="oc-tree-row"><span class="oc-tree-icon" aria-hidden="true"><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="M14 3H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/><path d="M14 3v6h6"/></svg></span><a class="oc-tree-label" href="#">Floor plan with very long file name that scrolls.dwg</a><span class="oc-tree-actions"><button class="oc-table-actions-icon" type="button" aria-label="Rename Floor plan" title="Rename">✎</button></span></div></li>
|
|
26
|
+
</ul>
|
|
27
|
+
</details>
|
|
28
|
+
</li>
|
|
29
|
+
<li>
|
|
30
|
+
<details class="oc-tree-node">
|
|
31
|
+
<summary class="oc-tree-row"><span class="oc-tree-icon" aria-hidden="true"><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 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span><span class="oc-tree-label">Bathroom</span><span class="oc-tree-count">1</span></summary>
|
|
32
|
+
<ul class="oc-tree-list">
|
|
33
|
+
<li><div class="oc-tree-row is-muted"><span class="oc-tree-label">Photos (archived)</span></div></li>
|
|
34
|
+
</ul>
|
|
35
|
+
</details>
|
|
36
|
+
</li>
|
|
37
|
+
</ul>
|
|
38
|
+
</div>
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
<!-- OmniaUI component: upgrade-banner - Soft callout for a free plan with limits, a usage meter and an upgrade action. Needs @birdycom/omniaui CSS.
|
|
2
|
-
File: packages/ui/snippets/upgrade-banner.html | Map: callout -> icon -> body (title + plan, text, usage meter) -> actions -> dismiss
|
|
3
|
-
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
-
.oc-upgrade-banner: Callout (role="note" or aside). Modifiers: --premium (brand gradient frame), --compact (one line). State: hidden attribute. Tone: --oc-upgrade-color.
|
|
5
|
-
.oc-upgrade-banner-icon: Icon in the tone color
|
|
6
|
-
.oc-upgrade-banner-body / -title / -plan / -text: Text column, title row, plan pill, explanation (may contain links)
|
|
7
|
-
.oc-upgrade-banner-usage + meter.oc-upgrade-banner-meter: Label, native meter, "3 / 5"
|
|
8
|
-
.oc-upgrade-banner-actions: Upgrade button and secondary link
|
|
9
|
-
.oc-upgrade-banner-dismiss: Optional X in the corner (your app sets hidden)
|
|
10
|
-
Slots: icon, title, plan, text, usage, actions
|
|
11
|
-
-->
|
|
12
|
-
<aside class="oc-upgrade-banner" aria-label="Plan limits">
|
|
13
|
-
<span class="oc-upgrade-banner-icon" aria-hidden="true"><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="M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9z"/></svg></span>
|
|
14
|
-
<div class="oc-upgrade-banner-body">
|
|
15
|
-
<p class="oc-upgrade-banner-title">You are on the free plan <span class="oc-upgrade-banner-plan">Free</span></p>
|
|
16
|
-
<p class="oc-upgrade-banner-text">Free accounts keep up to 5 projects. Groups, exports and unlimited history come with <a href="#">Premium</a>.</p>
|
|
17
|
-
<div class="oc-upgrade-banner-usage">
|
|
18
|
-
<span>Projects</span>
|
|
19
|
-
<meter class="oc-upgrade-banner-meter" min="0" max="5" low="3" high="4" optimum="0" value="4" aria-label="Projects used">4 of 5</meter>
|
|
20
|
-
<span>4 / 5</span>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
<div class="oc-upgrade-banner-actions">
|
|
24
|
-
<a class="oc-btn oc-btn--sm" href="#">Upgrade</a>
|
|
25
|
-
<a class="oc-btn oc-btn--ghost oc-btn--sm" href="#">Compare plans</a>
|
|
26
|
-
</div>
|
|
27
|
-
<button class="oc-upgrade-banner-dismiss" type="button" aria-label="Dismiss">×</button>
|
|
28
|
-
</aside>
|
|
1
|
+
<!-- OmniaUI component: upgrade-banner - Soft callout for a free plan with limits, a usage meter and an upgrade action. Needs @birdycom/omniaui CSS.
|
|
2
|
+
File: packages/ui/snippets/upgrade-banner.html | Map: callout -> icon -> body (title + plan, text, usage meter) -> actions -> dismiss
|
|
3
|
+
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
+
.oc-upgrade-banner: Callout (role="note" or aside). Modifiers: --premium (brand gradient frame), --compact (one line). State: hidden attribute. Tone: --oc-upgrade-color.
|
|
5
|
+
.oc-upgrade-banner-icon: Icon in the tone color
|
|
6
|
+
.oc-upgrade-banner-body / -title / -plan / -text: Text column, title row, plan pill, explanation (may contain links)
|
|
7
|
+
.oc-upgrade-banner-usage + meter.oc-upgrade-banner-meter: Label, native meter, "3 / 5"
|
|
8
|
+
.oc-upgrade-banner-actions: Upgrade button and secondary link
|
|
9
|
+
.oc-upgrade-banner-dismiss: Optional X in the corner (your app sets hidden)
|
|
10
|
+
Slots: icon, title, plan, text, usage, actions
|
|
11
|
+
-->
|
|
12
|
+
<aside class="oc-upgrade-banner" aria-label="Plan limits">
|
|
13
|
+
<span class="oc-upgrade-banner-icon" aria-hidden="true"><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="M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9z"/></svg></span>
|
|
14
|
+
<div class="oc-upgrade-banner-body">
|
|
15
|
+
<p class="oc-upgrade-banner-title">You are on the free plan <span class="oc-upgrade-banner-plan">Free</span></p>
|
|
16
|
+
<p class="oc-upgrade-banner-text">Free accounts keep up to 5 projects. Groups, exports and unlimited history come with <a href="#">Premium</a>.</p>
|
|
17
|
+
<div class="oc-upgrade-banner-usage">
|
|
18
|
+
<span>Projects</span>
|
|
19
|
+
<meter class="oc-upgrade-banner-meter" min="0" max="5" low="3" high="4" optimum="0" value="4" aria-label="Projects used">4 of 5</meter>
|
|
20
|
+
<span>4 / 5</span>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="oc-upgrade-banner-actions">
|
|
24
|
+
<a class="oc-btn oc-btn--sm" href="#">Upgrade</a>
|
|
25
|
+
<a class="oc-btn oc-btn--ghost oc-btn--sm" href="#">Compare plans</a>
|
|
26
|
+
</div>
|
|
27
|
+
<button class="oc-upgrade-banner-dismiss" type="button" aria-label="Dismiss">×</button>
|
|
28
|
+
</aside>
|
package/snippets/user.html
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<!-- OmniaUI component: user - Avatar with name and e-mail, truncating. Needs @birdycom/omniaui CSS.
|
|
2
|
-
Class API (modifiers are extra classes / attributes on the same element):
|
|
3
|
-
.oc-user: Flex row wrapper
|
|
4
|
-
.oc-avatar: Avatar from the avatar component (initials or img)
|
|
5
|
-
.oc-user-text: Text column
|
|
6
|
-
.oc-user-name: Name (truncates)
|
|
7
|
-
.oc-user-email: Secondary line (truncates)
|
|
8
|
-
-->
|
|
9
|
-
<div class="oc-user">
|
|
10
|
-
<span class="oc-avatar">SC</span>
|
|
11
|
-
<span class="oc-user-text">
|
|
12
|
-
<span class="oc-user-name">Serge Cools</span>
|
|
13
|
-
<span class="oc-user-email">serge@example.com</span>
|
|
14
|
-
</span>
|
|
15
|
-
</div>
|
|
1
|
+
<!-- OmniaUI component: user - Avatar with name and e-mail, truncating. Needs @birdycom/omniaui CSS.
|
|
2
|
+
Class API (modifiers are extra classes / attributes on the same element):
|
|
3
|
+
.oc-user: Flex row wrapper
|
|
4
|
+
.oc-avatar: Avatar from the avatar component (initials or img)
|
|
5
|
+
.oc-user-text: Text column
|
|
6
|
+
.oc-user-name: Name (truncates)
|
|
7
|
+
.oc-user-email: Secondary line (truncates)
|
|
8
|
+
-->
|
|
9
|
+
<div class="oc-user">
|
|
10
|
+
<span class="oc-avatar">SC</span>
|
|
11
|
+
<span class="oc-user-text">
|
|
12
|
+
<span class="oc-user-name">Serge Cools</span>
|
|
13
|
+
<span class="oc-user-email">serge@example.com</span>
|
|
14
|
+
</span>
|
|
15
|
+
</div>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<!-- OmniaUI component: version-banner - Small "new version available - reload" chip; the reload is a plain link to the current page. Needs @birdycom/omniaui CSS.
|
|
2
|
-
File: packages/ui/snippets/version-banner.html | Map: chip -> dot -> long text -> short text -> reload action
|
|
3
|
-
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
-
.oc-version-banner: The chip (role="status"). Modifiers: --info, --success (tone; default warning), --floating (fixed bottom end). State: hidden attribute.
|
|
5
|
-
.oc-version-banner-dot: Pulsing dot in the tone color
|
|
6
|
-
.oc-version-banner-text / -short: Long text, and the short text shown instead below 40rem
|
|
7
|
-
.oc-version-banner-action: Reload link (href="") or button
|
|
8
|
-
Slots: text, short text, action
|
|
9
|
-
-->
|
|
10
|
-
<div class="oc-version-banner" role="status">
|
|
11
|
-
<span class="oc-version-banner-dot" aria-hidden="true"></span>
|
|
12
|
-
<span class="oc-version-banner-text">New version (v0.6.0) available - reload the page</span>
|
|
13
|
-
<span class="oc-version-banner-short">New version</span>
|
|
14
|
-
<a class="oc-version-banner-action" href="">Reload</a>
|
|
15
|
-
</div>
|
|
1
|
+
<!-- OmniaUI component: version-banner - Small "new version available - reload" chip; the reload is a plain link to the current page. Needs @birdycom/omniaui CSS.
|
|
2
|
+
File: packages/ui/snippets/version-banner.html | Map: chip -> dot -> long text -> short text -> reload action
|
|
3
|
+
Class API (modifiers are extra classes / attributes on the same element):
|
|
4
|
+
.oc-version-banner: The chip (role="status"). Modifiers: --info, --success (tone; default warning), --floating (fixed bottom end). State: hidden attribute.
|
|
5
|
+
.oc-version-banner-dot: Pulsing dot in the tone color
|
|
6
|
+
.oc-version-banner-text / -short: Long text, and the short text shown instead below 40rem
|
|
7
|
+
.oc-version-banner-action: Reload link (href="") or button
|
|
8
|
+
Slots: text, short text, action
|
|
9
|
+
-->
|
|
10
|
+
<div class="oc-version-banner" role="status">
|
|
11
|
+
<span class="oc-version-banner-dot" aria-hidden="true"></span>
|
|
12
|
+
<span class="oc-version-banner-text">New version (v0.6.0) available - reload the page</span>
|
|
13
|
+
<span class="oc-version-banner-short">New version</span>
|
|
14
|
+
<a class="oc-version-banner-action" href="">Reload</a>
|
|
15
|
+
</div>
|