@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.
Files changed (214) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +21 -21
  3. package/bin/lib/add.mjs +126 -126
  4. package/bin/lib/catalog.mjs +169 -169
  5. package/bin/lib/project.mjs +90 -90
  6. package/bin/omniaui.mjs +69 -69
  7. package/dist/code-block.css +25 -25
  8. package/dist/components-extra.css +916 -914
  9. package/dist/components.css +6559 -6469
  10. package/dist/components.min.css +1 -1
  11. package/dist/data-table.d.ts +9 -9
  12. package/dist/data-table.js +505 -505
  13. package/dist/docs-ui.css +267 -265
  14. package/dist/oc-theme.css +69 -69
  15. package/dist/parts/app-accordion-accent.css +60 -60
  16. package/dist/parts/app-alpha-tabs.css +68 -68
  17. package/dist/parts/app-busy-overlay.css +25 -25
  18. package/dist/parts/app-column-menu.css +85 -85
  19. package/dist/parts/app-confirm-dialog.css +70 -70
  20. package/dist/parts/app-cookie-consent.css +63 -63
  21. package/dist/parts/app-data-table.css +174 -174
  22. package/dist/parts/app-greeting.css +47 -47
  23. package/dist/parts/app-list-toolbar.css +81 -81
  24. package/dist/parts/app-page-header.css +54 -54
  25. package/dist/parts/app-severity-card.css +91 -91
  26. package/dist/parts/app-sidebar-dark.css +15 -15
  27. package/dist/parts/app-sortable-row.css +52 -52
  28. package/dist/parts/app-stat-card.css +68 -68
  29. package/dist/parts/app-table-actions.css +71 -71
  30. package/dist/parts/app-table-compact.css +54 -54
  31. package/dist/parts/app-top-progress.css +68 -68
  32. package/dist/parts/app-tree.css +104 -104
  33. package/dist/parts/app-upgrade-banner.css +90 -90
  34. package/dist/parts/app-version-banner.css +80 -80
  35. package/dist/parts/data-chart-line.css +167 -167
  36. package/dist/parts/forms-affix-input.css +75 -75
  37. package/dist/parts/forms-barcode-input.css +75 -75
  38. package/dist/parts/forms-chip-filter.css +91 -91
  39. package/dist/parts/forms-color-select.css +97 -89
  40. package/dist/parts/forms-decimal-input.css +51 -51
  41. package/dist/parts/forms-filter-counts.css +94 -94
  42. package/dist/parts/forms-language-select.css +89 -76
  43. package/dist/parts/forms-number-input.css +98 -95
  44. package/dist/parts/forms-password-requirements.css +55 -55
  45. package/dist/parts/forms-phone-input.css +85 -85
  46. package/dist/parts/forms-time-input.css +74 -74
  47. package/dist/parts/forms-toggle-field.css +69 -69
  48. package/dist/parts/media-art.css +21 -21
  49. package/dist/parts/media-attachment.css +160 -160
  50. package/dist/parts/media-browser-frame.css +73 -73
  51. package/dist/parts/media-card.css +83 -83
  52. package/dist/parts/media-chat-composer.css +90 -90
  53. package/dist/parts/media-doc-viewer.css +151 -151
  54. package/dist/parts/media-emoji-picker.css +88 -88
  55. package/dist/parts/media-entity-card.css +52 -52
  56. package/dist/parts/media-flip-card.css +78 -78
  57. package/dist/parts/media-image-zoom.css +68 -68
  58. package/dist/parts/media-lightbox.css +131 -131
  59. package/dist/parts/media-message-thread.css +136 -136
  60. package/dist/parts/media-message.css +160 -160
  61. package/dist/parts/media-row.css +78 -78
  62. package/dist/parts/media-stack-card.css +82 -82
  63. package/dist/parts/media-terminal-log.css +76 -76
  64. package/dist/parts/media-thumb.css +71 -71
  65. package/dist/parts/site-fact-list.css +25 -25
  66. package/dist/parts/site-link-arrow.css +34 -34
  67. package/dist/parts/site-marquee.css +34 -34
  68. package/dist/parts/site-next-teaser.css +75 -75
  69. package/dist/parts/site-price-card.css +91 -75
  70. package/dist/parts/site-product-mark.css +66 -66
  71. package/dist/parts/site-project-card.css +111 -111
  72. package/dist/parts/site-prose.css +124 -124
  73. package/dist/parts/site-stack-list.css +48 -48
  74. package/dist/parts/site-timeline.css +54 -54
  75. package/dist/showcase.css +404 -404
  76. package/package.json +69 -69
  77. package/snippets/accordion-accent.html +24 -24
  78. package/snippets/accordion.html +11 -11
  79. package/snippets/affix-input.html +30 -30
  80. package/snippets/alert-dialog.html +22 -22
  81. package/snippets/alert.html +5 -5
  82. package/snippets/alpha-tabs.html +37 -37
  83. package/snippets/aspect-ratio.html +15 -15
  84. package/snippets/attachment.html +43 -43
  85. package/snippets/avatar.html +6 -6
  86. package/snippets/back-link.html +5 -5
  87. package/snippets/badge.html +5 -5
  88. package/snippets/barcode-input.html +18 -18
  89. package/snippets/breadcrumb.html +6 -6
  90. package/snippets/browser-frame.html +18 -18
  91. package/snippets/busy-overlay.html +31 -31
  92. package/snippets/button-group.html +21 -21
  93. package/snippets/button.html +8 -8
  94. package/snippets/calendar.html +43 -43
  95. package/snippets/card.html +17 -17
  96. package/snippets/carousel.html +21 -21
  97. package/snippets/chart-line.html +46 -46
  98. package/snippets/chart.html +27 -27
  99. package/snippets/chat-composer.html +21 -21
  100. package/snippets/checkbox.html +5 -5
  101. package/snippets/checklist.html +23 -23
  102. package/snippets/chip-filter.html +14 -14
  103. package/snippets/code-window.html +20 -20
  104. package/snippets/collapsible.html +19 -19
  105. package/snippets/color-field.html +13 -13
  106. package/snippets/color-select.html +18 -18
  107. package/snippets/column-menu.html +38 -38
  108. package/snippets/combobox.html +19 -19
  109. package/snippets/command.html +24 -24
  110. package/snippets/confirm-dialog.html +32 -32
  111. package/snippets/context-menu.html +25 -25
  112. package/snippets/cookie-consent.html +70 -70
  113. package/snippets/copy-field.html +19 -19
  114. package/snippets/counter.html +2 -2
  115. package/snippets/data-table.html +151 -151
  116. package/snippets/date-picker.html +32 -32
  117. package/snippets/decimal-input.html +20 -20
  118. package/snippets/definition-list.html +20 -20
  119. package/snippets/demo-panel.html +18 -18
  120. package/snippets/doc-viewer.html +58 -58
  121. package/snippets/drawer.html +30 -30
  122. package/snippets/dropdown-menu.html +27 -27
  123. package/snippets/dropdown.html +9 -9
  124. package/snippets/dropzone.html +13 -13
  125. package/snippets/emoji-picker.html +51 -51
  126. package/snippets/empty-state.html +17 -17
  127. package/snippets/entity-card.html +26 -26
  128. package/snippets/expandable-table.html +26 -26
  129. package/snippets/fact-list.html +14 -14
  130. package/snippets/filter-counts.html +30 -30
  131. package/snippets/flip-card.html +22 -22
  132. package/snippets/form-field.html +6 -6
  133. package/snippets/greeting.html +22 -22
  134. package/snippets/heading.html +14 -14
  135. package/snippets/hover-card.html +18 -18
  136. package/snippets/image-zoom.html +30 -30
  137. package/snippets/input-group.html +10 -10
  138. package/snippets/input.html +5 -5
  139. package/snippets/item.html +26 -26
  140. package/snippets/kbd.html +13 -13
  141. package/snippets/label.html +9 -9
  142. package/snippets/language-select.html +26 -26
  143. package/snippets/launcher-card.html +14 -14
  144. package/snippets/lightbox.html +50 -50
  145. package/snippets/link-arrow.html +10 -10
  146. package/snippets/list-toolbar.html +33 -33
  147. package/snippets/marquee.html +15 -15
  148. package/snippets/media-card.html +28 -28
  149. package/snippets/media-row.html +21 -21
  150. package/snippets/media-thumb.html +12 -12
  151. package/snippets/menubar.html +30 -30
  152. package/snippets/message-thread.html +123 -123
  153. package/snippets/message.html +51 -51
  154. package/snippets/modal.html +15 -15
  155. package/snippets/native-select.html +15 -15
  156. package/snippets/navmenu.html +23 -23
  157. package/snippets/next-teaser.html +15 -15
  158. package/snippets/number-input.html +27 -27
  159. package/snippets/otp-input.html +9 -9
  160. package/snippets/page-header.html +24 -24
  161. package/snippets/pagination.html +6 -6
  162. package/snippets/password-input.html +24 -24
  163. package/snippets/password-requirements.html +30 -30
  164. package/snippets/phone-input.html +22 -22
  165. package/snippets/popover.html +15 -15
  166. package/snippets/price-card.html +34 -34
  167. package/snippets/product-mark.html +13 -13
  168. package/snippets/progress.html +4 -4
  169. package/snippets/project-card.html +23 -23
  170. package/snippets/prose.html +54 -54
  171. package/snippets/radio.html +17 -17
  172. package/snippets/recovery-codes.html +20 -20
  173. package/snippets/resizable.html +16 -16
  174. package/snippets/scroll-area.html +20 -20
  175. package/snippets/search.html +8 -8
  176. package/snippets/segmented.html +11 -11
  177. package/snippets/select.html +7 -7
  178. package/snippets/separator.html +15 -15
  179. package/snippets/severity-card.html +35 -35
  180. package/snippets/sheet.html +32 -32
  181. package/snippets/sidebar-docs.html +24 -24
  182. package/snippets/sidebar.html +55 -55
  183. package/snippets/site-footer.html +6 -6
  184. package/snippets/site-header.html +26 -26
  185. package/snippets/skeleton.html +4 -4
  186. package/snippets/slider.html +17 -17
  187. package/snippets/sortable-row.html +31 -31
  188. package/snippets/spinner.html +14 -14
  189. package/snippets/stack-card.html +17 -17
  190. package/snippets/stack-list.html +16 -16
  191. package/snippets/stat-card.html +24 -24
  192. package/snippets/stepper.html +13 -13
  193. package/snippets/switch.html +6 -6
  194. package/snippets/table-actions.html +39 -39
  195. package/snippets/table-compact.html +24 -24
  196. package/snippets/table.html +29 -29
  197. package/snippets/tabs.html +9 -9
  198. package/snippets/tag-input.html +60 -17
  199. package/snippets/terminal-log.html +23 -23
  200. package/snippets/textarea.html +3 -3
  201. package/snippets/theme-switch.html +6 -6
  202. package/snippets/time-input.html +26 -26
  203. package/snippets/timeline.html +28 -28
  204. package/snippets/toast-stack.html +10 -10
  205. package/snippets/toast.html +36 -36
  206. package/snippets/toc.html +13 -13
  207. package/snippets/toggle-field.html +20 -20
  208. package/snippets/toggle.html +22 -22
  209. package/snippets/tooltip.html +4 -4
  210. package/snippets/top-progress.html +12 -12
  211. package/snippets/tree.html +38 -38
  212. package/snippets/upgrade-banner.html +28 -28
  213. package/snippets/user.html +15 -15
  214. package/snippets/version-banner.html +15 -15
package/package.json CHANGED
@@ -1,69 +1,69 @@
1
- {
2
- "name": "@birdycom/omniaui",
3
- "version": "0.11.0",
4
- "description": "OmniaUI components: CSS-first UI built on native HTML (dialog, popover, details) with light-dark() theming — no JavaScript required. Includes the omniaui CLI (add/list).",
5
- "type": "module",
6
- "license": "MIT",
7
- "author": "Serge Cools (Birdycom)",
8
- "homepage": "https://omniaui.eu",
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/Birdycom/OmniaUI.git",
12
- "directory": "packages/ui"
13
- },
14
- "bugs": {
15
- "url": "https://github.com/Birdycom/OmniaUI/issues"
16
- },
17
- "keywords": [
18
- "css",
19
- "components",
20
- "dialog",
21
- "popover",
22
- "dark-mode",
23
- "omniaui",
24
- "omniacss"
25
- ],
26
- "exports": {
27
- ".": "./dist/components.css",
28
- "./min": "./dist/components.min.css",
29
- "./showcase.css": "./dist/showcase.css",
30
- "./snippets/*": "./snippets/*",
31
- "./data-table.js": "./dist/data-table.js",
32
- "./manifest.json": "./manifest.json",
33
- "./package.json": "./package.json"
34
- },
35
- "style": "./dist/components.css",
36
- "files": [
37
- "dist",
38
- "snippets",
39
- "bin",
40
- "manifest.json",
41
- "README.md",
42
- "LICENSE"
43
- ],
44
- "unpkg": "./dist/components.min.css",
45
- "jsdelivr": "./dist/components.min.css",
46
- "sideEffects": [
47
- "*.css"
48
- ],
49
- "engines": {
50
- "node": ">=22"
51
- },
52
- "publishConfig": {
53
- "access": "public"
54
- },
55
- "bin": {
56
- "omniaui": "./bin/omniaui.mjs"
57
- },
58
- "peerDependencies": {
59
- "@birdycom/omniacss": "^0.11.0"
60
- },
61
- "peerDependenciesMeta": {
62
- "@birdycom/omniacss": {
63
- "optional": true
64
- }
65
- },
66
- "scripts": {
67
- "test": "node --test test/*.test.mjs"
68
- }
69
- }
1
+ {
2
+ "name": "@birdycom/omniaui",
3
+ "version": "0.11.1",
4
+ "description": "OmniaUI components: CSS-first UI built on native HTML (dialog, popover, details) with light-dark() theming — no JavaScript required. Includes the omniaui CLI (add/list).",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "Serge Cools (Birdycom)",
8
+ "homepage": "https://omniaui.eu",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/Birdycom/OmniaUI.git",
12
+ "directory": "packages/ui"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/Birdycom/OmniaUI/issues"
16
+ },
17
+ "keywords": [
18
+ "css",
19
+ "components",
20
+ "dialog",
21
+ "popover",
22
+ "dark-mode",
23
+ "omniaui",
24
+ "omniacss"
25
+ ],
26
+ "exports": {
27
+ ".": "./dist/components.css",
28
+ "./min": "./dist/components.min.css",
29
+ "./showcase.css": "./dist/showcase.css",
30
+ "./snippets/*": "./snippets/*",
31
+ "./data-table.js": "./dist/data-table.js",
32
+ "./manifest.json": "./manifest.json",
33
+ "./package.json": "./package.json"
34
+ },
35
+ "style": "./dist/components.css",
36
+ "files": [
37
+ "dist",
38
+ "snippets",
39
+ "bin",
40
+ "manifest.json",
41
+ "README.md",
42
+ "LICENSE"
43
+ ],
44
+ "unpkg": "./dist/components.min.css",
45
+ "jsdelivr": "./dist/components.min.css",
46
+ "sideEffects": [
47
+ "*.css"
48
+ ],
49
+ "engines": {
50
+ "node": ">=22"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "bin": {
56
+ "omniaui": "./bin/omniaui.mjs"
57
+ },
58
+ "peerDependencies": {
59
+ "@birdycom/omniacss": "^0.11.1"
60
+ },
61
+ "peerDependenciesMeta": {
62
+ "@birdycom/omniacss": {
63
+ "optional": true
64
+ }
65
+ },
66
+ "scripts": {
67
+ "test": "node --test test/*.test.mjs"
68
+ }
69
+ }
@@ -1,24 +1,24 @@
1
- <!-- OmniaUI component: accordion-accent - Accordion variant: every item is a card with a colored accent edge; presets or semantic colors per item - no JavaScript. Needs @birdycom/omniaui CSS.
2
- File: packages/ui/snippets/accordion-accent.html | Map: accordion (accent) -> item (default primary) -> item (preset color) -> item (semantic color)
3
- Class API (modifiers are extra classes / attributes on the same element):
4
- .oc-accordion.oc-accordion--accent: Separate item cards with a 3px colored start edge. Combine with --flush for edge-only cards.
5
- Colors: an .oc-accent--blue / cyan / green / orange / red / violet / yellow preset on the accordion or one item,
6
- or .oc-accordion-item--success / --warning / --danger (or .oc-accordion--success / --warning / --danger for all items).
7
- Custom property: --oc-accordion-accent (any Omnia color token)
8
- .oc-accordion-accent-meta: Small accent-colored label at the end of the trigger
9
- Slots: items (details.oc-accordion-item + summary.oc-accordion-trigger + .oc-accordion-content)
10
- -->
11
- <div class="oc-accordion oc-accordion--accent">
12
- <details class="oc-accordion-item" name="oc-accent-demo" open>
13
- <summary class="oc-accordion-trigger">Customer details <span class="oc-accordion-accent-meta">Complete</span></summary>
14
- <div class="oc-accordion-content">Ada Lovelace, Main street 12, Ghent.</div>
15
- </details>
16
- <details class="oc-accordion-item oc-accent--violet" name="oc-accent-demo">
17
- <summary class="oc-accordion-trigger">Materials <span class="oc-accordion-accent-meta">4 items</span></summary>
18
- <div class="oc-accordion-content">Oak worktop, two cabinets, a sink and the tap.</div>
19
- </details>
20
- <details class="oc-accordion-item oc-accordion-item--warning" name="oc-accent-demo">
21
- <summary class="oc-accordion-trigger">Planning <span class="oc-accordion-accent-meta">Needs a date</span></summary>
22
- <div class="oc-accordion-content">Pick a start date with the customer.</div>
23
- </details>
24
- </div>
1
+ <!-- OmniaUI component: accordion-accent - Accordion variant: every item is a card with a colored accent edge; presets or semantic colors per item - no JavaScript. Needs @birdycom/omniaui CSS.
2
+ File: packages/ui/snippets/accordion-accent.html | Map: accordion (accent) -> item (default primary) -> item (preset color) -> item (semantic color)
3
+ Class API (modifiers are extra classes / attributes on the same element):
4
+ .oc-accordion.oc-accordion--accent: Separate item cards with a 3px colored start edge. Combine with --flush for edge-only cards.
5
+ Colors: an .oc-accent--blue / cyan / green / orange / red / violet / yellow preset on the accordion or one item,
6
+ or .oc-accordion-item--success / --warning / --danger (or .oc-accordion--success / --warning / --danger for all items).
7
+ Custom property: --oc-accordion-accent (any Omnia color token)
8
+ .oc-accordion-accent-meta: Small accent-colored label at the end of the trigger
9
+ Slots: items (details.oc-accordion-item + summary.oc-accordion-trigger + .oc-accordion-content)
10
+ -->
11
+ <div class="oc-accordion oc-accordion--accent">
12
+ <details class="oc-accordion-item" name="oc-accent-demo" open>
13
+ <summary class="oc-accordion-trigger">Customer details <span class="oc-accordion-accent-meta">Complete</span></summary>
14
+ <div class="oc-accordion-content">Ada Lovelace, Main street 12, Ghent.</div>
15
+ </details>
16
+ <details class="oc-accordion-item oc-accent--violet" name="oc-accent-demo">
17
+ <summary class="oc-accordion-trigger">Materials <span class="oc-accordion-accent-meta">4 items</span></summary>
18
+ <div class="oc-accordion-content">Oak worktop, two cabinets, a sink and the tap.</div>
19
+ </details>
20
+ <details class="oc-accordion-item oc-accordion-item--warning" name="oc-accent-demo">
21
+ <summary class="oc-accordion-trigger">Planning <span class="oc-accordion-accent-meta">Needs a date</span></summary>
22
+ <div class="oc-accordion-content">Pick a start date with the customer.</div>
23
+ </details>
24
+ </div>
@@ -1,11 +1,11 @@
1
- <!-- OmniaUI component: accordion — Exclusive accordion on <details name> — no JavaScript. Needs @birdycom/omniaui CSS. -->
2
- <div class="oc-accordion">
3
- <details class="oc-accordion-item" name="faq" open>
4
- <summary class="oc-accordion-trigger">Is it accessible?</summary>
5
- <div class="oc-accordion-content">Yes. It uses the native details/summary elements.</div>
6
- </details>
7
- <details class="oc-accordion-item" name="faq">
8
- <summary class="oc-accordion-trigger">Does it need JavaScript?</summary>
9
- <div class="oc-accordion-content">No. Items with the same name open one at a time.</div>
10
- </details>
11
- </div>
1
+ <!-- OmniaUI component: accordion — Exclusive accordion on <details name> — no JavaScript. Needs @birdycom/omniaui CSS. -->
2
+ <div class="oc-accordion">
3
+ <details class="oc-accordion-item" name="faq" open>
4
+ <summary class="oc-accordion-trigger">Is it accessible?</summary>
5
+ <div class="oc-accordion-content">Yes. It uses the native details/summary elements.</div>
6
+ </details>
7
+ <details class="oc-accordion-item" name="faq">
8
+ <summary class="oc-accordion-trigger">Does it need JavaScript?</summary>
9
+ <div class="oc-accordion-content">No. Items with the same name open one at a time.</div>
10
+ </details>
11
+ </div>
@@ -1,30 +1,30 @@
1
- <!-- OmniaUI component: affix-input - Price, margin and email fields. The symbol sits in its own column. Needs @birdycom/omniaui CSS.
2
- File: packages/ui/snippets/affix-input.html | Map: euro column -> percent column -> email column
3
- Class API (modifiers are extra classes / attributes on the same element):
4
- .oc-input-group--affix: Add to .oc-input-group. The frame is the wrapper; .oc-input-addon is a column with a divider.
5
- .oc-input-group--end: Optional. Right-aligns the value.
6
- .oc-input-group--error: Red frame (also via aria-invalid="true" or :user-invalid on the input)
7
- .oc-input-addon: The symbol column. Before the input = left (euro, percent, @). After the input = right.
8
- States: :focus-within (ring), :user-invalid (red), disabled input (dimmed)
9
- -->
10
- <div class="oc-field">
11
- <label class="oc-field-label" for="oc-price">Selling price excl. VAT</label>
12
- <div class="oc-input-group oc-input-group--affix">
13
- <span class="oc-input-addon" aria-hidden="true">&euro;</span>
14
- <input class="oc-input" id="oc-price" type="text" inputmode="decimal" name="price" value="5,15">
15
- </div>
16
- </div>
17
- <div class="oc-field">
18
- <label class="oc-field-label" for="oc-margin">Margin %</label>
19
- <div class="oc-input-group oc-input-group--affix">
20
- <span class="oc-input-addon" aria-hidden="true">%</span>
21
- <input class="oc-input" id="oc-margin" type="text" inputmode="decimal" name="margin" value="30">
22
- </div>
23
- </div>
24
- <div class="oc-field">
25
- <label class="oc-field-label" for="oc-mail">Email</label>
26
- <div class="oc-input-group oc-input-group--affix">
27
- <span class="oc-input-addon" aria-hidden="true">@</span>
28
- <input class="oc-input" id="oc-mail" type="email" name="email" autocomplete="email" placeholder="name@company.com">
29
- </div>
30
- </div>
1
+ <!-- OmniaUI component: affix-input - Price, margin and email fields. The symbol sits in its own column. Needs @birdycom/omniaui CSS.
2
+ File: packages/ui/snippets/affix-input.html | Map: euro column -> percent column -> email column
3
+ Class API (modifiers are extra classes / attributes on the same element):
4
+ .oc-input-group--affix: Add to .oc-input-group. The frame is the wrapper; .oc-input-addon is a column with a divider.
5
+ .oc-input-group--end: Optional. Right-aligns the value.
6
+ .oc-input-group--error: Red frame (also via aria-invalid="true" or :user-invalid on the input)
7
+ .oc-input-addon: The symbol column. Before the input = left (euro, percent, @). After the input = right.
8
+ States: :focus-within (ring), :user-invalid (red), disabled input (dimmed)
9
+ -->
10
+ <div class="oc-field">
11
+ <label class="oc-field-label" for="oc-price">Selling price excl. VAT</label>
12
+ <div class="oc-input-group oc-input-group--affix">
13
+ <span class="oc-input-addon" aria-hidden="true">&euro;</span>
14
+ <input class="oc-input" id="oc-price" type="text" inputmode="decimal" name="price" value="5,15">
15
+ </div>
16
+ </div>
17
+ <div class="oc-field">
18
+ <label class="oc-field-label" for="oc-margin">Margin %</label>
19
+ <div class="oc-input-group oc-input-group--affix">
20
+ <span class="oc-input-addon" aria-hidden="true">%</span>
21
+ <input class="oc-input" id="oc-margin" type="text" inputmode="decimal" name="margin" value="30">
22
+ </div>
23
+ </div>
24
+ <div class="oc-field">
25
+ <label class="oc-field-label" for="oc-mail">Email</label>
26
+ <div class="oc-input-group oc-input-group--affix">
27
+ <span class="oc-input-addon" aria-hidden="true">@</span>
28
+ <input class="oc-input" id="oc-mail" type="email" name="email" autocomplete="email" placeholder="name@company.com">
29
+ </div>
30
+ </div>
@@ -1,22 +1,22 @@
1
- <!-- OmniaUI component: alert-dialog - Confirmation modal with a status icon (success, error, warning, info, question). Needs @birdycom/omniaui CSS.
2
- Class API (modifiers are extra classes / attributes on the same element):
3
- dialog.oc-modal: Native dialog from the modal component
4
- .oc-modal-content.oc-modal-content--sm.oc-alert-dialog: Centered content box
5
- .oc-alert-dialog--success / --error / --warning / --info / --question: Type modifier on the content element (sets the icon color)
6
- .oc-alert-dialog-icon: Round icon holder with a glyph (!, &#10003;, ?, i, &times;)
7
- .oc-modal-title / -body / -footer: Title, message and the buttons (secondary left, primary right)
8
- Slots: icon, title, message (body), footer buttons (secondary + primary)
9
- -->
10
- <button class="oc-btn oc-btn--destructive" type="button" command="show-modal" commandfor="oc-alert-dialog-demo">Delete contact</button>
11
-
12
- <dialog class="oc-modal" id="oc-alert-dialog-demo" closedby="closerequest" aria-labelledby="oc-alert-dialog-title" aria-describedby="oc-alert-dialog-text">
13
- <div class="oc-modal-content oc-modal-content--sm oc-alert-dialog oc-alert-dialog--warning">
14
- <span class="oc-alert-dialog-icon" aria-hidden="true">!</span>
15
- <h2 class="oc-modal-title" id="oc-alert-dialog-title">Delete this contact?</h2>
16
- <div class="oc-modal-body" id="oc-alert-dialog-text">All related documents stay, but the link to this contact is removed.</div>
17
- <div class="oc-modal-footer">
18
- <button class="oc-btn oc-btn--outline" type="button" command="close" commandfor="oc-alert-dialog-demo">Cancel</button>
19
- <button class="oc-btn oc-btn--destructive" type="button" command="close" commandfor="oc-alert-dialog-demo">Delete</button>
20
- </div>
21
- </div>
22
- </dialog>
1
+ <!-- OmniaUI component: alert-dialog - Confirmation modal with a status icon (success, error, warning, info, question). Needs @birdycom/omniaui CSS.
2
+ Class API (modifiers are extra classes / attributes on the same element):
3
+ dialog.oc-modal: Native dialog from the modal component
4
+ .oc-modal-content.oc-modal-content--sm.oc-alert-dialog: Centered content box
5
+ .oc-alert-dialog--success / --error / --warning / --info / --question: Type modifier on the content element (sets the icon color)
6
+ .oc-alert-dialog-icon: Round icon holder with a glyph (!, &#10003;, ?, i, &times;)
7
+ .oc-modal-title / -body / -footer: Title, message and the buttons (secondary left, primary right)
8
+ Slots: icon, title, message (body), footer buttons (secondary + primary)
9
+ -->
10
+ <button class="oc-btn oc-btn--destructive" type="button" command="show-modal" commandfor="oc-alert-dialog-demo">Delete contact</button>
11
+
12
+ <dialog class="oc-modal" id="oc-alert-dialog-demo" closedby="closerequest" aria-labelledby="oc-alert-dialog-title" aria-describedby="oc-alert-dialog-text">
13
+ <div class="oc-modal-content oc-modal-content--sm oc-alert-dialog oc-alert-dialog--warning">
14
+ <span class="oc-alert-dialog-icon" aria-hidden="true">!</span>
15
+ <h2 class="oc-modal-title" id="oc-alert-dialog-title">Delete this contact?</h2>
16
+ <div class="oc-modal-body" id="oc-alert-dialog-text">All related documents stay, but the link to this contact is removed.</div>
17
+ <div class="oc-modal-footer">
18
+ <button class="oc-btn oc-btn--outline" type="button" command="close" commandfor="oc-alert-dialog-demo">Cancel</button>
19
+ <button class="oc-btn oc-btn--destructive" type="button" command="close" commandfor="oc-alert-dialog-demo">Delete</button>
20
+ </div>
21
+ </div>
22
+ </dialog>
@@ -1,5 +1,5 @@
1
- <!-- OmniaUI component: alert — Alerts: info, success, warning, danger. Needs @birdycom/omniaui CSS. -->
2
- <div class="oc-alert oc-alert--info" role="status">
3
- <h4 class="oc-alert-title">Heads up!</h4>
4
- <p class="oc-alert-description">You can add components with the OmniaCSS CLI.</p>
5
- </div>
1
+ <!-- OmniaUI component: alert — Alerts: info, success, warning, danger. Needs @birdycom/omniaui CSS. -->
2
+ <div class="oc-alert oc-alert--info" role="status">
3
+ <h4 class="oc-alert-title">Heads up!</h4>
4
+ <p class="oc-alert-description">You can add components with the OmniaCSS CLI.</p>
5
+ </div>
@@ -1,37 +1,37 @@
1
- <!-- OmniaUI component: alpha-tabs - All + A-Z letter filter bar for long lists; scrolls sideways on small screens. Needs @birdycom/omniaui CSS.
2
- File: packages/ui/snippets/alpha-tabs.html | Map: nav -> "All" item -> letter items (current, empty)
3
- Class API (modifiers are extra classes / attributes on the same element):
4
- nav.oc-alpha-tabs: Letter bar. Modifiers: --wrap (wrap instead of scroll), --sm, --plain (no frame).
5
- .oc-alpha-tabs-item: One letter (a href="?letter=A" or button). States: aria-current="true" / .is-active, aria-disabled="true" (no entries).
6
- .oc-alpha-tabs-item--all: The wider "All" item at the start
7
- Slots: one item per letter (render only the letters you need, or all with empty ones disabled)
8
- -->
9
- <nav class="oc-alpha-tabs" aria-label="Filter by letter">
10
- <a class="oc-alpha-tabs-item oc-alpha-tabs-item--all" href="?letter=all">All</a>
11
- <a class="oc-alpha-tabs-item" href="?letter=A">A</a>
12
- <a class="oc-alpha-tabs-item" href="?letter=B" aria-current="true">B</a>
13
- <a class="oc-alpha-tabs-item" href="?letter=C">C</a>
14
- <a class="oc-alpha-tabs-item" href="?letter=D">D</a>
15
- <a class="oc-alpha-tabs-item" aria-disabled="true">E</a>
16
- <a class="oc-alpha-tabs-item" href="?letter=F">F</a>
17
- <a class="oc-alpha-tabs-item" href="?letter=G">G</a>
18
- <a class="oc-alpha-tabs-item" href="?letter=H">H</a>
19
- <a class="oc-alpha-tabs-item" href="?letter=I">I</a>
20
- <a class="oc-alpha-tabs-item" href="?letter=J">J</a>
21
- <a class="oc-alpha-tabs-item" href="?letter=K">K</a>
22
- <a class="oc-alpha-tabs-item" href="?letter=L">L</a>
23
- <a class="oc-alpha-tabs-item" href="?letter=M">M</a>
24
- <a class="oc-alpha-tabs-item" href="?letter=N">N</a>
25
- <a class="oc-alpha-tabs-item" href="?letter=O">O</a>
26
- <a class="oc-alpha-tabs-item" href="?letter=P">P</a>
27
- <a class="oc-alpha-tabs-item" aria-disabled="true">Q</a>
28
- <a class="oc-alpha-tabs-item" href="?letter=R">R</a>
29
- <a class="oc-alpha-tabs-item" href="?letter=S">S</a>
30
- <a class="oc-alpha-tabs-item" href="?letter=T">T</a>
31
- <a class="oc-alpha-tabs-item" href="?letter=U">U</a>
32
- <a class="oc-alpha-tabs-item" href="?letter=V">V</a>
33
- <a class="oc-alpha-tabs-item" href="?letter=W">W</a>
34
- <a class="oc-alpha-tabs-item" aria-disabled="true">X</a>
35
- <a class="oc-alpha-tabs-item" href="?letter=Y">Y</a>
36
- <a class="oc-alpha-tabs-item" href="?letter=Z">Z</a>
37
- </nav>
1
+ <!-- OmniaUI component: alpha-tabs - All + A-Z letter filter bar for long lists; scrolls sideways on small screens. Needs @birdycom/omniaui CSS.
2
+ File: packages/ui/snippets/alpha-tabs.html | Map: nav -> "All" item -> letter items (current, empty)
3
+ Class API (modifiers are extra classes / attributes on the same element):
4
+ nav.oc-alpha-tabs: Letter bar. Modifiers: --wrap (wrap instead of scroll), --sm, --plain (no frame).
5
+ .oc-alpha-tabs-item: One letter (a href="?letter=A" or button). States: aria-current="true" / .is-active, aria-disabled="true" (no entries).
6
+ .oc-alpha-tabs-item--all: The wider "All" item at the start
7
+ Slots: one item per letter (render only the letters you need, or all with empty ones disabled)
8
+ -->
9
+ <nav class="oc-alpha-tabs" aria-label="Filter by letter">
10
+ <a class="oc-alpha-tabs-item oc-alpha-tabs-item--all" href="?letter=all">All</a>
11
+ <a class="oc-alpha-tabs-item" href="?letter=A">A</a>
12
+ <a class="oc-alpha-tabs-item" href="?letter=B" aria-current="true">B</a>
13
+ <a class="oc-alpha-tabs-item" href="?letter=C">C</a>
14
+ <a class="oc-alpha-tabs-item" href="?letter=D">D</a>
15
+ <a class="oc-alpha-tabs-item" aria-disabled="true">E</a>
16
+ <a class="oc-alpha-tabs-item" href="?letter=F">F</a>
17
+ <a class="oc-alpha-tabs-item" href="?letter=G">G</a>
18
+ <a class="oc-alpha-tabs-item" href="?letter=H">H</a>
19
+ <a class="oc-alpha-tabs-item" href="?letter=I">I</a>
20
+ <a class="oc-alpha-tabs-item" href="?letter=J">J</a>
21
+ <a class="oc-alpha-tabs-item" href="?letter=K">K</a>
22
+ <a class="oc-alpha-tabs-item" href="?letter=L">L</a>
23
+ <a class="oc-alpha-tabs-item" href="?letter=M">M</a>
24
+ <a class="oc-alpha-tabs-item" href="?letter=N">N</a>
25
+ <a class="oc-alpha-tabs-item" href="?letter=O">O</a>
26
+ <a class="oc-alpha-tabs-item" href="?letter=P">P</a>
27
+ <a class="oc-alpha-tabs-item" aria-disabled="true">Q</a>
28
+ <a class="oc-alpha-tabs-item" href="?letter=R">R</a>
29
+ <a class="oc-alpha-tabs-item" href="?letter=S">S</a>
30
+ <a class="oc-alpha-tabs-item" href="?letter=T">T</a>
31
+ <a class="oc-alpha-tabs-item" href="?letter=U">U</a>
32
+ <a class="oc-alpha-tabs-item" href="?letter=V">V</a>
33
+ <a class="oc-alpha-tabs-item" href="?letter=W">W</a>
34
+ <a class="oc-alpha-tabs-item" aria-disabled="true">X</a>
35
+ <a class="oc-alpha-tabs-item" href="?letter=Y">Y</a>
36
+ <a class="oc-alpha-tabs-item" href="?letter=Z">Z</a>
37
+ </nav>
@@ -1,15 +1,15 @@
1
- <!-- OmniaUI component: aspect-ratio - Aspect-ratio box with presets and fill behaviour for img/video/iframe. Needs @birdycom/omniaui CSS.
2
- Class API (modifiers are extra classes / attributes on the same element):
3
- .oc-aspect: ratio box (default 16 / 9). Presets: --square, --photo (4/3), --portrait (3/4), --wide (21/9). --center centers text
4
- --oc-aspect: custom ratio, e.g. style="--oc-aspect: 5 / 2"
5
- -->
6
- <div style="max-inline-size:24rem">
7
- <div class="oc-aspect oc-aspect--center"><span class="oc-item-description">16 / 9</span></div>
8
- </div>
9
-
10
- <div style="display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-start">
11
- <div class="oc-aspect oc-aspect--square oc-aspect--center" style="inline-size:7rem"><span class="oc-item-description">1 / 1</span></div>
12
- <div class="oc-aspect oc-aspect--photo oc-aspect--center" style="inline-size:9rem"><span class="oc-item-description">4 / 3</span></div>
13
- <div class="oc-aspect oc-aspect--portrait oc-aspect--center" style="inline-size:6rem"><span class="oc-item-description">3 / 4</span></div>
14
- <div class="oc-aspect oc-aspect--center" style="inline-size:12rem;--oc-aspect: 5 / 2"><span class="oc-item-description">5 / 2</span></div>
15
- </div>
1
+ <!-- OmniaUI component: aspect-ratio - Aspect-ratio box with presets and fill behaviour for img/video/iframe. Needs @birdycom/omniaui CSS.
2
+ Class API (modifiers are extra classes / attributes on the same element):
3
+ .oc-aspect: ratio box (default 16 / 9). Presets: --square, --photo (4/3), --portrait (3/4), --wide (21/9). --center centers text
4
+ --oc-aspect: custom ratio, e.g. style="--oc-aspect: 5 / 2"
5
+ -->
6
+ <div style="max-inline-size:24rem">
7
+ <div class="oc-aspect oc-aspect--center"><span class="oc-item-description">16 / 9</span></div>
8
+ </div>
9
+
10
+ <div style="display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-start">
11
+ <div class="oc-aspect oc-aspect--square oc-aspect--center" style="inline-size:7rem"><span class="oc-item-description">1 / 1</span></div>
12
+ <div class="oc-aspect oc-aspect--photo oc-aspect--center" style="inline-size:9rem"><span class="oc-item-description">4 / 3</span></div>
13
+ <div class="oc-aspect oc-aspect--portrait oc-aspect--center" style="inline-size:6rem"><span class="oc-item-description">3 / 4</span></div>
14
+ <div class="oc-aspect oc-aspect--center" style="inline-size:12rem;--oc-aspect: 5 / 2"><span class="oc-item-description">5 / 2</span></div>
15
+ </div>
@@ -1,43 +1,43 @@
1
- <!-- OmniaUI component: attachment — File chip and image preview for chat messages and composers: icon by type, name, size, remove and upload states. Needs @birdycom/omniaui CSS.
2
- File: packages/ui/snippets/attachment.html | Map: file chips (types) -> image preview -> composer row (thumb, uploading, error, remove)
3
- Class API (modifiers are extra classes / attributes on the same element):
4
- .oc-attachment-list: Wrapping row of chips (ul or div). Modifier: --stack (one per line, full width)
5
- a.oc-attachment | div.oc-attachment: File chip. Types: --pdf, --doc, --sheet, --zip, --image (tint of the icon tile).
6
- States: --uploading (progress line from --oc-attachment-progress), --error
7
- .oc-attachment__icon: Page tile with the extension text, or an img for a small preview
8
- .oc-attachment__body > .oc-attachment__name + .oc-attachment__size
9
- button.oc-attachment__remove: Remove button (composer); give it an aria-label with the file name
10
- a.oc-attachment-image > img + .oc-attachment-image__caption: Image preview inside a message (4 : 3, max 18rem wide)
11
- .oc-attachment-thumb > img + button.oc-attachment__remove: Square thumbnail of a pasted screenshot
12
- No JavaScript. Removing a file or tracking upload progress is up to your app; set --oc-attachment-progress inline.
13
- -->
14
- <div style="display:grid;gap:1.25rem;inline-size:100%;max-inline-size:40rem">
15
- <ul class="oc-attachment-list" aria-label="Files in this message">
16
- <li><a class="oc-attachment oc-attachment--pdf" href="#quote.pdf" download><span class="oc-attachment__icon" aria-hidden="true">PDF</span><span class="oc-attachment__body"><span class="oc-attachment__name">Quote kitchen Dewitte v2.pdf</span><span class="oc-attachment__size">1.2 MB</span></span></a></li>
17
- <li><a class="oc-attachment oc-attachment--sheet" href="#measurements.xlsx" download><span class="oc-attachment__icon" aria-hidden="true">XLS</span><span class="oc-attachment__body"><span class="oc-attachment__name">Measurements ground floor.xlsx</span><span class="oc-attachment__size">86 KB</span></span></a></li>
18
- <li><a class="oc-attachment oc-attachment--doc" href="#contract.docx" download><span class="oc-attachment__icon" aria-hidden="true">DOC</span><span class="oc-attachment__body"><span class="oc-attachment__name">Contract addendum.docx</span><span class="oc-attachment__size">240 KB</span></span></a></li>
19
- <li><a class="oc-attachment oc-attachment--zip" href="#plans.zip" download><span class="oc-attachment__icon" aria-hidden="true">ZIP</span><span class="oc-attachment__body"><span class="oc-attachment__name">Plans architect.zip</span><span class="oc-attachment__size">14.8 MB</span></span></a></li>
20
- </ul>
21
-
22
- <a class="oc-attachment-image" href="#worktop-sample.jpg">
23
- <span class="oc-media-art oc-media-art--6" role="img" aria-label="Photo of the Calacatta worktop sample"></span>
24
- <span class="oc-attachment-image__caption">worktop-sample.jpg · 2.1 MB</span>
25
- </a>
26
-
27
- <div class="oc-attachment-list" aria-label="Files to send">
28
- <div class="oc-attachment-thumb">
29
- <span class="oc-media-art oc-media-art--2" role="img" aria-label="Pasted screenshot"></span>
30
- <button type="button" class="oc-attachment__remove" aria-label="Remove screenshot.png">&#10005;</button>
31
- </div>
32
- <div class="oc-attachment oc-attachment--pdf oc-attachment--uploading" style="--oc-attachment-progress:65%">
33
- <span class="oc-attachment__icon" aria-hidden="true">PDF</span>
34
- <span class="oc-attachment__body"><span class="oc-attachment__name">Delivery note 4471.pdf</span><span class="oc-attachment__size" role="status">Uploading… 65%</span></span>
35
- <button type="button" class="oc-attachment__remove" aria-label="Cancel upload of Delivery note 4471.pdf">&#10005;</button>
36
- </div>
37
- <div class="oc-attachment oc-attachment--image oc-attachment--error">
38
- <span class="oc-attachment__icon" aria-hidden="true">HEIC</span>
39
- <span class="oc-attachment__body"><span class="oc-attachment__name">IMG_2048.heic</span><span class="oc-attachment__size">Larger than 25 MB</span></span>
40
- <button type="button" class="oc-attachment__remove" aria-label="Remove IMG_2048.heic">&#10005;</button>
41
- </div>
42
- </div>
43
- </div>
1
+ <!-- OmniaUI component: attachment — File chip and image preview for chat messages and composers: icon by type, name, size, remove and upload states. Needs @birdycom/omniaui CSS.
2
+ File: packages/ui/snippets/attachment.html | Map: file chips (types) -> image preview -> composer row (thumb, uploading, error, remove)
3
+ Class API (modifiers are extra classes / attributes on the same element):
4
+ .oc-attachment-list: Wrapping row of chips (ul or div). Modifier: --stack (one per line, full width)
5
+ a.oc-attachment | div.oc-attachment: File chip. Types: --pdf, --doc, --sheet, --zip, --image (tint of the icon tile).
6
+ States: --uploading (progress line from --oc-attachment-progress), --error
7
+ .oc-attachment__icon: Page tile with the extension text, or an img for a small preview
8
+ .oc-attachment__body > .oc-attachment__name + .oc-attachment__size
9
+ button.oc-attachment__remove: Remove button (composer); give it an aria-label with the file name
10
+ a.oc-attachment-image > img + .oc-attachment-image__caption: Image preview inside a message (4 : 3, max 18rem wide)
11
+ .oc-attachment-thumb > img + button.oc-attachment__remove: Square thumbnail of a pasted screenshot
12
+ No JavaScript. Removing a file or tracking upload progress is up to your app; set --oc-attachment-progress inline.
13
+ -->
14
+ <div style="display:grid;gap:1.25rem;inline-size:100%;max-inline-size:40rem">
15
+ <ul class="oc-attachment-list" aria-label="Files in this message">
16
+ <li><a class="oc-attachment oc-attachment--pdf" href="#quote.pdf" download><span class="oc-attachment__icon" aria-hidden="true">PDF</span><span class="oc-attachment__body"><span class="oc-attachment__name">Quote kitchen Dewitte v2.pdf</span><span class="oc-attachment__size">1.2 MB</span></span></a></li>
17
+ <li><a class="oc-attachment oc-attachment--sheet" href="#measurements.xlsx" download><span class="oc-attachment__icon" aria-hidden="true">XLS</span><span class="oc-attachment__body"><span class="oc-attachment__name">Measurements ground floor.xlsx</span><span class="oc-attachment__size">86 KB</span></span></a></li>
18
+ <li><a class="oc-attachment oc-attachment--doc" href="#contract.docx" download><span class="oc-attachment__icon" aria-hidden="true">DOC</span><span class="oc-attachment__body"><span class="oc-attachment__name">Contract addendum.docx</span><span class="oc-attachment__size">240 KB</span></span></a></li>
19
+ <li><a class="oc-attachment oc-attachment--zip" href="#plans.zip" download><span class="oc-attachment__icon" aria-hidden="true">ZIP</span><span class="oc-attachment__body"><span class="oc-attachment__name">Plans architect.zip</span><span class="oc-attachment__size">14.8 MB</span></span></a></li>
20
+ </ul>
21
+
22
+ <a class="oc-attachment-image" href="#worktop-sample.jpg">
23
+ <span class="oc-media-art oc-media-art--6" role="img" aria-label="Photo of the Calacatta worktop sample"></span>
24
+ <span class="oc-attachment-image__caption">worktop-sample.jpg · 2.1 MB</span>
25
+ </a>
26
+
27
+ <div class="oc-attachment-list" aria-label="Files to send">
28
+ <div class="oc-attachment-thumb">
29
+ <span class="oc-media-art oc-media-art--2" role="img" aria-label="Pasted screenshot"></span>
30
+ <button type="button" class="oc-attachment__remove" aria-label="Remove screenshot.png">&#10005;</button>
31
+ </div>
32
+ <div class="oc-attachment oc-attachment--pdf oc-attachment--uploading" style="--oc-attachment-progress:65%">
33
+ <span class="oc-attachment__icon" aria-hidden="true">PDF</span>
34
+ <span class="oc-attachment__body"><span class="oc-attachment__name">Delivery note 4471.pdf</span><span class="oc-attachment__size" role="status">Uploading… 65%</span></span>
35
+ <button type="button" class="oc-attachment__remove" aria-label="Cancel upload of Delivery note 4471.pdf">&#10005;</button>
36
+ </div>
37
+ <div class="oc-attachment oc-attachment--image oc-attachment--error">
38
+ <span class="oc-attachment__icon" aria-hidden="true">HEIC</span>
39
+ <span class="oc-attachment__body"><span class="oc-attachment__name">IMG_2048.heic</span><span class="oc-attachment__size">Larger than 25 MB</span></span>
40
+ <button type="button" class="oc-attachment__remove" aria-label="Remove IMG_2048.heic">&#10005;</button>
41
+ </div>
42
+ </div>
43
+ </div>
@@ -1,6 +1,6 @@
1
- <!-- OmniaUI component: avatar — Avatars and avatar group. Needs @birdycom/omniaui CSS. -->
2
- <div class="oc-avatar-group">
3
- <span class="oc-avatar">SC</span>
4
- <span class="oc-avatar">BC</span>
5
- <span class="oc-avatar oc-avatar--lg">OM</span>
6
- </div>
1
+ <!-- OmniaUI component: avatar — Avatars and avatar group. Needs @birdycom/omniaui CSS. -->
2
+ <div class="oc-avatar-group">
3
+ <span class="oc-avatar">SC</span>
4
+ <span class="oc-avatar">BC</span>
5
+ <span class="oc-avatar oc-avatar--lg">OM</span>
6
+ </div>
@@ -1,5 +1,5 @@
1
- <!-- OmniaUI component: back-link - Outline link that names its destination (Back to Products). Needs @birdycom/omniaui CSS.
2
- Class API (modifiers are extra classes / attributes on the same element):
3
- .oc-back-link: Anchor styled as an outline button with a leading arrow
4
- -->
5
- <a class="oc-back-link" href="#">Back to Products</a>
1
+ <!-- OmniaUI component: back-link - Outline link that names its destination (Back to Products). Needs @birdycom/omniaui CSS.
2
+ Class API (modifiers are extra classes / attributes on the same element):
3
+ .oc-back-link: Anchor styled as an outline button with a leading arrow
4
+ -->
5
+ <a class="oc-back-link" href="#">Back to Products</a>
@@ -1,5 +1,5 @@
1
- <!-- OmniaUI component: badge — Badges. Needs @birdycom/omniaui CSS. -->
2
- <span class="oc-badge">Badge</span>
3
- <span class="oc-badge oc-badge--secondary">Secondary</span>
4
- <span class="oc-badge oc-badge--outline">Outline</span>
5
- <span class="oc-badge oc-badge--destructive">Error</span>
1
+ <!-- OmniaUI component: badge — Badges. Needs @birdycom/omniaui CSS. -->
2
+ <span class="oc-badge">Badge</span>
3
+ <span class="oc-badge oc-badge--secondary">Secondary</span>
4
+ <span class="oc-badge oc-badge--outline">Outline</span>
5
+ <span class="oc-badge oc-badge--destructive">Error</span>