@supersoniks/concorde 5.0.3 → 5.0.5

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 (151) hide show
  1. package/.agents/skills/concorde-component-docs/SKILL.md +194 -0
  2. package/.agents/skills/concorde-component-docs/template.md +45 -0
  3. package/ai/cursor/rules/concorde-theme.mdc +1 -1
  4. package/ai/cursor/rules/concorde.mdc +1 -1
  5. package/ai/skills/concorde/SKILL.md +1 -1
  6. package/ai/skills/concorde-theme/SKILL.md +21 -10
  7. package/build-infos.json +1 -1
  8. package/concorde-core.bundle.js +515 -521
  9. package/concorde-core.es.js +5151 -5056
  10. package/dist/concorde-core.bundle.js +515 -521
  11. package/dist/concorde-core.es.js +5151 -5056
  12. package/dist/docs-mock-api-sw.js +2 -0
  13. package/dist/docs-mock-api-sw.js.map +2 -2
  14. package/docs/assets/index-CD4WyL6o.css +1 -0
  15. package/docs/assets/{index-BnK6OS7w.js → index-wVZpLVYW.js} +815 -808
  16. package/docs/crawl/core/components/ui/alert/alert.html +76 -5
  17. package/docs/crawl/core/components/ui/alert-messages/alert-messages.html +113 -5
  18. package/docs/crawl/core/components/ui/badge/badge.html +57 -8
  19. package/docs/crawl/core/components/ui/captcha/captcha.html +90 -8
  20. package/docs/crawl/core/components/ui/card/card.html +122 -12
  21. package/docs/crawl/core/components/ui/divider/divider.html +117 -31
  22. package/docs/crawl/core/components/ui/form/fieldset/fieldset.html +232 -101
  23. package/docs/crawl/core/components/ui/form/form-actions/form-actions.html +95 -52
  24. package/docs/crawl/core/components/ui/form/form-layout/form-layout.html +97 -38
  25. package/docs/crawl/core/components/ui/group/group.html +60 -38
  26. package/docs/crawl/core/components/ui/icon/icon.html +136 -47
  27. package/docs/crawl/core/components/ui/image/image.html +118 -6
  28. package/docs/crawl/core/components/ui/link/link.html +65 -7
  29. package/docs/crawl/core/components/ui/loader/loader.html +97 -23
  30. package/docs/crawl/core/components/ui/menu/menu.html +162 -90
  31. package/docs/crawl/core/components/ui/modal/modal.html +275 -50
  32. package/docs/crawl/core/components/ui/pop/pop.html +242 -124
  33. package/docs/crawl/core/components/ui/progress/progress.html +103 -30
  34. package/docs/crawl/core/components/ui/table/table.html +303 -171
  35. package/docs/crawl/core/components/ui/theme/theme.html +131 -0
  36. package/docs/crawl/core/components/ui/toast/toast.html +170 -59
  37. package/docs/crawl/core/components/ui/tooltip/tooltip.html +90 -29
  38. package/docs/crawl/docs/_decorators/ancestor-attribute.html +3 -2
  39. package/docs/crawl/docs/_getting-started/start.html +1 -1
  40. package/docs/crawl/docs/_getting-started/theming.html +311 -63
  41. package/docs/crawl/hubs/form-components.html +71 -49
  42. package/docs/crawl/index.html +7 -6
  43. package/docs/docs-mock-api-sw.js +2 -0
  44. package/docs/docs-mock-api-sw.js.map +2 -2
  45. package/docs/index.html +6 -4
  46. package/docs/llms-full.txt +1468 -405
  47. package/docs/llms.txt +23 -30
  48. package/docs/sitemap.xml +3 -0
  49. package/docs/src/core/components/ui/alert/alert.md +21 -2
  50. package/docs/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  51. package/docs/src/core/components/ui/badge/badge.md +19 -6
  52. package/docs/src/core/components/ui/captcha/captcha.md +65 -6
  53. package/docs/src/core/components/ui/card/card.md +73 -10
  54. package/docs/src/core/components/ui/divider/divider.md +107 -13
  55. package/docs/src/core/components/ui/form/fieldset/fieldset.md +175 -99
  56. package/docs/src/core/components/ui/form/form-actions/form-actions.md +75 -52
  57. package/docs/src/core/components/ui/form/form-layout/form-layout.md +109 -34
  58. package/docs/src/core/components/ui/group/group.md +36 -36
  59. package/docs/src/core/components/ui/icon/icon.md +132 -43
  60. package/docs/src/core/components/ui/image/image.md +35 -3
  61. package/docs/src/core/components/ui/link/link.md +43 -5
  62. package/docs/src/core/components/ui/loader/loader.md +79 -22
  63. package/docs/src/core/components/ui/menu/menu.md +133 -92
  64. package/docs/src/core/components/ui/modal/modal.md +163 -47
  65. package/docs/src/core/components/ui/pop/pop.md +217 -123
  66. package/docs/src/core/components/ui/progress/progress.md +76 -30
  67. package/docs/src/core/components/ui/table/table.md +147 -171
  68. package/docs/src/core/components/ui/theme/theme.md +122 -0
  69. package/docs/src/core/components/ui/toast/toast.md +108 -58
  70. package/docs/src/core/components/ui/tooltip/tooltip.md +68 -26
  71. package/docs/src/docs/_decorators/ancestor-attribute.md +3 -2
  72. package/docs/src/docs/_getting-started/start.md +1 -1
  73. package/docs/src/docs/_getting-started/theming.md +223 -61
  74. package/docs/src/docs/search/docs-search.json +2504 -399
  75. package/docs/src/tsconfig.json +18 -0
  76. package/index.html +4 -2
  77. package/package.json +7 -1
  78. package/public/docs-mock-api-sw.js +2 -0
  79. package/public/docs-mock-api-sw.js.map +2 -2
  80. package/src/core/components/ui/_css/align.ts +1 -0
  81. package/src/core/components/ui/_css/type.ts +86 -8
  82. package/src/core/components/ui/_i18n/ui-aria-labels.ts +8 -0
  83. package/src/core/components/ui/alert/alert.md +21 -2
  84. package/src/core/components/ui/alert-messages/alert-messages.md +85 -0
  85. package/src/core/components/ui/badge/badge.md +19 -6
  86. package/src/core/components/ui/badge/badge.ts +8 -9
  87. package/src/core/components/ui/button/button.ts +5 -15
  88. package/src/core/components/ui/captcha/captcha.md +65 -6
  89. package/src/core/components/ui/card/card.md +73 -10
  90. package/src/core/components/ui/card/card.ts +24 -22
  91. package/src/core/components/ui/divider/divider.md +107 -13
  92. package/src/core/components/ui/divider/divider.ts +40 -33
  93. package/src/core/components/ui/form/fieldset/fieldset.md +175 -99
  94. package/src/core/components/ui/form/fieldset/fieldset.ts +15 -28
  95. package/src/core/components/ui/form/fieldset/legend.ts +13 -13
  96. package/src/core/components/ui/form/form-actions/form-actions.md +75 -52
  97. package/src/core/components/ui/form/form-actions/form-actions.ts +7 -5
  98. package/src/core/components/ui/form/form-layout/form-layout.md +109 -34
  99. package/src/core/components/ui/form/form-layout/form-layout.ts +27 -24
  100. package/src/core/components/ui/form/textarea/textarea.ts +4 -3
  101. package/src/core/components/ui/group/group.md +36 -36
  102. package/src/core/components/ui/group/group.ts +5 -10
  103. package/src/core/components/ui/icon/icon.md +132 -43
  104. package/src/core/components/ui/image/image.md +35 -3
  105. package/src/core/components/ui/link/link.md +43 -5
  106. package/src/core/components/ui/loader/loader.md +79 -22
  107. package/src/core/components/ui/loader/loader.ts +67 -27
  108. package/src/core/components/ui/loader/styles/fixed.ts +6 -11
  109. package/src/core/components/ui/menu/menu.md +133 -92
  110. package/src/core/components/ui/menu/menu.ts +53 -58
  111. package/src/core/components/ui/modal/modal.md +163 -47
  112. package/src/core/components/ui/modal/modal.ts +2 -4
  113. package/src/core/components/ui/pop/pop.md +217 -123
  114. package/src/core/components/ui/pop/pop.ts +0 -1
  115. package/src/core/components/ui/progress/progress.md +76 -30
  116. package/src/core/components/ui/progress/progress.ts +25 -56
  117. package/src/core/components/ui/table/table-caption.ts +2 -2
  118. package/src/core/components/ui/table/table-tbody.ts +3 -3
  119. package/src/core/components/ui/table/table-td.ts +23 -18
  120. package/src/core/components/ui/table/table-th.ts +8 -8
  121. package/src/core/components/ui/table/table-tr.ts +4 -4
  122. package/src/core/components/ui/table/table.md +147 -171
  123. package/src/core/components/ui/table/table.ts +20 -19
  124. package/src/core/components/ui/theme/theme-collection/auto.ts +15 -0
  125. package/src/core/components/ui/theme/theme-collection/core-variables.ts +8 -31
  126. package/src/core/components/ui/theme/theme-collection/dark.ts +1 -7
  127. package/src/core/components/ui/theme/theme-collection/light.ts +30 -26
  128. package/src/core/components/ui/theme/theme.md +122 -0
  129. package/src/core/components/ui/theme/theme.ts +30 -7
  130. package/src/core/components/ui/toast/toast-item.ts +6 -9
  131. package/src/core/components/ui/toast/toast.md +108 -58
  132. package/src/core/components/ui/toast/types.ts +1 -1
  133. package/src/core/components/ui/tooltip/tooltip.md +68 -26
  134. package/src/core/decorators/subscriber/ancestorAttribute.spec.ts +26 -0
  135. package/src/core/decorators/subscriber/ancestorAttribute.ts +3 -4
  136. package/src/core/utils/AncestorAttributeObserver.ts +183 -70
  137. package/src/docs/_decorators/ancestor-attribute.md +3 -2
  138. package/src/docs/_getting-started/start.md +1 -1
  139. package/src/docs/_getting-started/theming.md +223 -61
  140. package/src/docs/code.ts +125 -58
  141. package/src/docs/header/header.ts +62 -54
  142. package/src/docs/mock-api/router.ts +2 -0
  143. package/src/docs/navigation/navigation.ts +6 -3
  144. package/src/docs/search/docs-search.json +2504 -399
  145. package/src/docs/search/markdown-renderer.ts +6 -6
  146. package/src/docs/search/search.ts +4 -4
  147. package/src/docs/tailwind/css/tailwind.css +6 -5
  148. package/src/tsconfig.json +18 -0
  149. package/src/tsconfig.tsbuildinfo +1 -1
  150. package/tailwind.config.js +19 -0
  151. package/docs/assets/index--GpD7R7a.css +0 -1
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Pop — Concorde</title>
7
- <meta name="description" content="Default placement is bottom. Placement is written side-align, like sonic-tooltip: side is top, right, bottom or left, align is start, center or end. Without align, content is aligned on the start of t">
8
- <meta name="keywords" content="Concorde, supersoniks, core/components/ui/pop/pop, pop, Pop, UI component, sonic-pop, web component, bottom, side-align, sonic-tooltip, side, top, right, left, align, start">
7
+ <meta name="description" content="sonic-pop anchors floating panels to a trigger: put the control in the default slot and the panel in slot=&quot;content&quot; (menus, forms, custom markup). Click toggles open/closed unless manual is set; defau">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/ui/pop/pop, pop, Pop, UI component, sonic-pop, web component, slot=&quot;content&quot;, manual, placement, bottom, top, left, right, -start">
9
9
  <meta name="concorde-doc-id" content="core/components/ui/pop/pop">
10
10
  <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/ui/pop/pop.html">
11
11
  </head>
@@ -15,90 +15,148 @@
15
15
  </header>
16
16
  <main>
17
17
  <article>
18
- <p class="doc-lead" id="doc-summary"><strong>Concorde UI component — Pop</strong>. Default placement is bottom. Placement is written side-align, like sonic-tooltip: side is top, right, bottom or left, align is start, center or end. Without align, content is aligned on the start of t <span>Doc ID: <code>core/components/ui/pop/pop</code>. Keywords: Concorde, supersoniks, core/components/ui/pop/pop, pop, Pop, UI component, sonic-pop, web component, bottom, side-align, sonic-tooltip, side, top, right, left, align, start. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/ui/pop/pop.html">https://concorde.supersoniks.org/crawl/core/components/ui/pop/pop.html</a>.</span></p>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde UI component — Pop</strong>. sonic-pop anchors floating panels to a trigger: put the control in the default slot and the panel in slot=&quot;content&quot; (menus, forms, custom markup). Click toggles open/closed unless manual is set; defau <span>Doc ID: <code>core/components/ui/pop/pop</code>. Keywords: Concorde, supersoniks, core/components/ui/pop/pop, pop, Pop, UI component, sonic-pop, web component, slot=&quot;content&quot;, manual, placement, bottom, top, left, right, -start. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/ui/pop/pop.html">https://concorde.supersoniks.org/crawl/core/components/ui/pop/pop.html</a>.</span></p>
19
19
  <h1 id="pop">Pop</h1>
20
- <h2 id="placement">Placement</h2>
21
- <pre><code>&lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;left&quot;&gt;
22
- &lt;sonic-button&gt;Left&lt;/sonic-button&gt;
23
- &lt;sonic-menu slot=&quot;content&quot;&gt;
24
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
25
- &lt;/sonic-menu&gt;
26
- &lt;/sonic-pop&gt;
27
- &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;right&quot;&gt;
28
- &lt;sonic-button&gt;Right&lt;/sonic-button&gt;
29
- &lt;sonic-menu slot=&quot;content&quot;&gt;
30
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
31
- &lt;/sonic-menu&gt;
32
- &lt;/sonic-pop&gt;
33
- &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;top&quot;&gt;
34
- &lt;sonic-button&gt;Top&lt;/sonic-button&gt;
35
- &lt;sonic-menu slot=&quot;content&quot;&gt;
36
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
37
- &lt;/sonic-menu&gt;
38
- &lt;/sonic-pop&gt;
39
- &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;bottom&quot;&gt;
40
- &lt;sonic-button&gt;Bottom&lt;/sonic-button&gt;
20
+ <p><strong><code>sonic-pop</code></strong> anchors floating panels to a trigger: put the control in the <strong>default slot</strong> and the panel in <strong><code>slot=&quot;content&quot;</code></strong> (menus, forms, custom markup). Click toggles open/closed unless <strong><code>manual</code></strong> is set; default <strong><code>placement</code></strong> is <strong><code>bottom</code></strong> (start-aligned). Position updates while open and flips inside the viewport when space is tight.</p>
21
+ <h2 id="basic-example">Basic example</h2>
22
+ <pre><code>&lt;sonic-pop class=&quot;inline-block&quot;&gt;
23
+ &lt;sonic-button&gt;Notifications&lt;/sonic-button&gt;
41
24
  &lt;sonic-menu slot=&quot;content&quot;&gt;
42
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
25
+ &lt;sonic-menu-item&gt;
26
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
27
+ Notifications
28
+ &lt;/sonic-menu-item&gt;
29
+ &lt;sonic-menu-item&gt;
30
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;settings&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
31
+ Settings
32
+ &lt;/sonic-menu-item&gt;
43
33
  &lt;/sonic-menu&gt;
44
34
  &lt;/sonic-pop&gt;
45
35
  </code></pre>
46
- <p>Default placement is <code>bottom</code>. Placement is written <code>side-align</code>, like <code>sonic-tooltip</code>: <code>side</code> is <code>top</code>, <code>right</code>, <code>bottom</code> or <code>left</code>, <code>align</code> is <code>start</code>, <code>center</code> or <code>end</code>. Without <code>align</code>, content is aligned on the start of the trigger. If there is not enough room, content flips to the opposite side and stays inside the viewport.</p>
47
- <p>The former space syntax (<code>placement=&quot;bottom center&quot;</code>) still works but is deprecated.</p>
48
- <pre><code>&lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;bottom-center&quot;&gt;
49
- &lt;sonic-button&gt;Bottom center&lt;/sonic-button&gt;
50
- &lt;sonic-menu slot=&quot;content&quot;&gt;
51
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
52
- &lt;/sonic-menu&gt;
53
- &lt;/sonic-pop&gt;
54
- &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;top-center&quot;&gt;
55
- &lt;sonic-button&gt;Top center&lt;/sonic-button&gt;
56
- &lt;sonic-menu slot=&quot;content&quot;&gt;
57
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
58
- &lt;/sonic-menu&gt;
59
- &lt;/sonic-pop&gt;
60
- &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;left-center&quot;&gt;
61
- &lt;sonic-button&gt;Left center&lt;/sonic-button&gt;
62
- &lt;sonic-menu slot=&quot;content&quot;&gt;
63
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
64
- &lt;/sonic-menu&gt;
65
- &lt;/sonic-pop&gt;
66
- &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;right-center&quot;&gt;
67
- &lt;sonic-button&gt;Right center&lt;/sonic-button&gt;
68
- &lt;sonic-menu slot=&quot;content&quot;&gt;
69
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
70
- &lt;/sonic-menu&gt;
71
- &lt;/sonic-pop&gt;
36
+ <h2 id="placement">Placement</h2>
37
+ <p>Use <strong><code>top</code></strong> · <strong><code>bottom</code></strong> · <strong><code>left</code></strong> · <strong><code>right</code></strong> for the main axis. Add <strong><code>-start</code></strong> · <strong><code>-center</code></strong> · <strong><code>-end</code></strong> to align along the trigger edge. With no align suffix, content aligns to <strong><code>start</code></strong>. Legacy space syntax (<code>placement=&quot;bottom center&quot;</code>) still works but is deprecated—prefer <strong><code>bottom-center</code></strong>.</p>
38
+ <pre><code>&lt;div class=&quot;flex flex-wrap gap-2&quot;&gt;
39
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;left&quot;&gt;
40
+ &lt;sonic-button&gt;Left&lt;/sonic-button&gt;
41
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
42
+ &lt;sonic-menu-item&gt;
43
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
44
+ Notifications
45
+ &lt;/sonic-menu-item&gt;
46
+ &lt;/sonic-menu&gt;
47
+ &lt;/sonic-pop&gt;
48
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;right&quot;&gt;
49
+ &lt;sonic-button&gt;Right&lt;/sonic-button&gt;
50
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
51
+ &lt;sonic-menu-item&gt;
52
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
53
+ Notifications
54
+ &lt;/sonic-menu-item&gt;
55
+ &lt;/sonic-menu&gt;
56
+ &lt;/sonic-pop&gt;
57
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;top&quot;&gt;
58
+ &lt;sonic-button&gt;Top&lt;/sonic-button&gt;
59
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
60
+ &lt;sonic-menu-item&gt;
61
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
62
+ Notifications
63
+ &lt;/sonic-menu-item&gt;
64
+ &lt;/sonic-menu&gt;
65
+ &lt;/sonic-pop&gt;
66
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;bottom&quot;&gt;
67
+ &lt;sonic-button&gt;Bottom&lt;/sonic-button&gt;
68
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
69
+ &lt;sonic-menu-item&gt;
70
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
71
+ Notifications
72
+ &lt;/sonic-menu-item&gt;
73
+ &lt;/sonic-menu&gt;
74
+ &lt;/sonic-pop&gt;
75
+ &lt;/div&gt;
76
+ </code></pre>
77
+ <h3 id="center-aligned-sides">Center-aligned sides</h3>
78
+ <pre><code>&lt;div class=&quot;flex flex-wrap gap-2&quot;&gt;
79
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;bottom-center&quot;&gt;
80
+ &lt;sonic-button&gt;Bottom center&lt;/sonic-button&gt;
81
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
82
+ &lt;sonic-menu-item&gt;
83
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
84
+ Notifications
85
+ &lt;/sonic-menu-item&gt;
86
+ &lt;/sonic-menu&gt;
87
+ &lt;/sonic-pop&gt;
88
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;top-center&quot;&gt;
89
+ &lt;sonic-button&gt;Top center&lt;/sonic-button&gt;
90
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
91
+ &lt;sonic-menu-item&gt;
92
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
93
+ Notifications
94
+ &lt;/sonic-menu-item&gt;
95
+ &lt;/sonic-menu&gt;
96
+ &lt;/sonic-pop&gt;
97
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;left-center&quot;&gt;
98
+ &lt;sonic-button&gt;Left center&lt;/sonic-button&gt;
99
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
100
+ &lt;sonic-menu-item&gt;
101
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
102
+ Notifications
103
+ &lt;/sonic-menu-item&gt;
104
+ &lt;/sonic-menu&gt;
105
+ &lt;/sonic-pop&gt;
106
+ &lt;sonic-pop class=&quot;inline-block&quot; placement=&quot;right-center&quot;&gt;
107
+ &lt;sonic-button&gt;Right center&lt;/sonic-button&gt;
108
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
109
+ &lt;sonic-menu-item&gt;
110
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
111
+ Notifications
112
+ &lt;/sonic-menu-item&gt;
113
+ &lt;/sonic-menu&gt;
114
+ &lt;/sonic-pop&gt;
115
+ &lt;/div&gt;
72
116
  </code></pre>
73
117
  <h2 id="shadow">Shadow</h2>
74
- <p>Default shadow is <code>lg</code>.</p>
75
- <pre><code>&lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;none&quot; placement=&#39;top&#39; &gt;
76
- &lt;sonic-button&gt;None&lt;/sonic-button&gt;
77
- &lt;sonic-menu slot=&quot;content&quot;&gt;
78
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
79
- &lt;/sonic-menu&gt;
80
- &lt;/sonic-pop&gt;
81
- &lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;sm&quot; placement=&#39;top&#39;&gt;
82
- &lt;sonic-button&gt;Small&lt;/sonic-button&gt;
83
- &lt;sonic-menu slot=&quot;content&quot;&gt;
84
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
85
- &lt;/sonic-menu&gt;
86
- &lt;/sonic-pop&gt;
87
- &lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;md&quot; placement=&#39;top&#39;&gt;
88
- &lt;sonic-button&gt;Medium&lt;/sonic-button&gt;
89
- &lt;sonic-menu slot=&quot;content&quot;&gt;
90
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
91
- &lt;/sonic-menu&gt;
92
- &lt;/sonic-pop&gt;
93
- &lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;lg&quot; placement=&#39;top&#39;&gt;
94
- &lt;sonic-button&gt;Large&lt;/sonic-button&gt;
95
- &lt;sonic-menu slot=&quot;content&quot;&gt;
96
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
97
- &lt;/sonic-menu&gt;
98
- &lt;/sonic-pop&gt;
118
+ <p>Default <strong><code>shadow</code></strong> is <strong><code>lg</code></strong>. The shadow applies to the floating <strong><code>content</code></strong> panel.</p>
119
+ <pre><code>&lt;div class=&quot;flex flex-wrap gap-2&quot;&gt;
120
+ &lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;none&quot; placement=&quot;top&quot;&gt;
121
+ &lt;sonic-button&gt;None&lt;/sonic-button&gt;
122
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
123
+ &lt;sonic-menu-item&gt;
124
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
125
+ Notifications
126
+ &lt;/sonic-menu-item&gt;
127
+ &lt;/sonic-menu&gt;
128
+ &lt;/sonic-pop&gt;
129
+ &lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;sm&quot; placement=&quot;top&quot;&gt;
130
+ &lt;sonic-button&gt;Small&lt;/sonic-button&gt;
131
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
132
+ &lt;sonic-menu-item&gt;
133
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
134
+ Notifications
135
+ &lt;/sonic-menu-item&gt;
136
+ &lt;/sonic-menu&gt;
137
+ &lt;/sonic-pop&gt;
138
+ &lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;md&quot; placement=&quot;top&quot;&gt;
139
+ &lt;sonic-button&gt;Medium&lt;/sonic-button&gt;
140
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
141
+ &lt;sonic-menu-item&gt;
142
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
143
+ Notifications
144
+ &lt;/sonic-menu-item&gt;
145
+ &lt;/sonic-menu&gt;
146
+ &lt;/sonic-pop&gt;
147
+ &lt;sonic-pop class=&quot;inline-block&quot; shadow=&quot;lg&quot; placement=&quot;top&quot;&gt;
148
+ &lt;sonic-button&gt;Large&lt;/sonic-button&gt;
149
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
150
+ &lt;sonic-menu-item&gt;
151
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
152
+ Notifications
153
+ &lt;/sonic-menu-item&gt;
154
+ &lt;/sonic-menu&gt;
155
+ &lt;/sonic-pop&gt;
156
+ &lt;/div&gt;
99
157
  </code></pre>
100
158
  <h2 id="inline">Inline</h2>
101
- <p>By default, pop is vertically aligned to the middle. Use <code>inline</code> to align it on the text baseline, e.g. inside a sentence.</p>
159
+ <p>By default the host is middle-aligned with siblings. Set <strong><code>inline</code></strong> to baseline-align the trigger inside running text.</p>
102
160
  <pre><code>&lt;p&gt;
103
161
  The Concorde flew from Paris to
104
162
  &lt;sonic-pop inline&gt;
@@ -111,66 +169,126 @@
111
169
  in about 3.5 hours.
112
170
  &lt;/p&gt;
113
171
  </code></pre>
114
- <h2 id="notoggle">noToggle</h2>
115
- <pre><code>&lt;sonic-pop class=&quot;inline-block&quot; noToggle&gt;
116
- &lt;sonic-button&gt;No toggle on click&lt;/sonic-button&gt;
117
- &lt;sonic-menu slot=&quot;content&quot;&gt;
118
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
119
- &lt;/sonic-menu&gt;
120
- &lt;/sonic-pop&gt;
121
- &lt;sonic-pop class=&quot;inline-block&quot; &gt;
122
- &lt;sonic-button&gt;Default toggle on click&lt;/sonic-button&gt;
123
- &lt;sonic-menu slot=&quot;content&quot;&gt;
124
- &lt;sonic-menu-item&gt;&lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;Notifications&lt;/sonic-menu-item&gt;
125
- &lt;/sonic-menu&gt;
126
- &lt;/sonic-pop&gt;
172
+ <h2 id="no-toggle">No toggle</h2>
173
+ <p>With <strong><code>noToggle</code></strong>, a click on the trigger still opens the pop but does not close it when it is already open. Use <strong><code>hide()</code></strong> or an outside click to dismiss.</p>
174
+ <pre><code>&lt;div class=&quot;flex flex-wrap gap-2&quot;&gt;
175
+ &lt;sonic-pop class=&quot;inline-block&quot; noToggle&gt;
176
+ &lt;sonic-button&gt;No toggle on click&lt;/sonic-button&gt;
177
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
178
+ &lt;sonic-menu-item&gt;
179
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
180
+ Notifications
181
+ &lt;/sonic-menu-item&gt;
182
+ &lt;/sonic-menu&gt;
183
+ &lt;/sonic-pop&gt;
184
+ &lt;sonic-pop class=&quot;inline-block&quot;&gt;
185
+ &lt;sonic-button&gt;Default toggle on click&lt;/sonic-button&gt;
186
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
187
+ &lt;sonic-menu-item&gt;
188
+ &lt;sonic-icon library=&quot;iconoir&quot; name=&quot;bell-notification&quot; slot=&quot;prefix&quot;&gt;&lt;/sonic-icon&gt;
189
+ Notifications
190
+ &lt;/sonic-menu-item&gt;
191
+ &lt;/sonic-menu&gt;
192
+ &lt;/sonic-pop&gt;
193
+ &lt;/div&gt;
127
194
  </code></pre>
128
- <h2 id="manual">manual</h2>
195
+ <h2 id="manual-control">Manual control</h2>
196
+ <p>Set <strong><code>manual</code></strong> to disable built-in click and keyboard toggle on the trigger. Call <strong><code>show()</code></strong> and <strong><code>hide()</code></strong> on the element instead. The pop dispatches <strong><code>show</code></strong> when it opens and <strong><code>hide</code></strong> when it closes.</p>
197
+ <p>Click <strong>Click to open pop</strong> to open the panel programmatically.</p>
129
198
  <pre><code>&lt;sonic-pop class=&quot;inline-block&quot; manual id=&quot;manualPop&quot;&gt;
130
- &lt;sonic-button onclick=&quot;alert(&#39;customAction without opening Pop content&#39;)&quot;&gt;Manual doesn&#39;t open on click&lt;/sonic-button&gt;
199
+ &lt;sonic-button onclick=&quot;alert(&#39;Custom action without opening the pop&#39;)&quot;&gt;Manual trigger&lt;/sonic-button&gt;
131
200
  &lt;sonic-menu slot=&quot;content&quot;&gt;
132
- &lt;sonic-menu-item&gt;Hourra !&lt;/sonic-menu-item&gt;
201
+ &lt;sonic-menu-item&gt;It worked!&lt;/sonic-menu-item&gt;
133
202
  &lt;/sonic-menu&gt;
134
203
  &lt;/sonic-pop&gt;
135
- &lt;sonic-button onclick=&quot;document.getElementById(&#39;manualPop&#39;).show()&quot; class=&quot;ml-5&quot; variant=&quot;outline&quot;&gt;
204
+ &lt;sonic-button onclick=&quot;document.getElementById(&#39;manualPop&#39;).show()&quot; class=&quot;ml-5&quot; variant=&quot;outline&quot;&gt;
136
205
  &lt;sonic-icon name=&quot;sparkles&quot; library=&quot;custom&quot;&gt;&lt;/sonic-icon&gt;
137
206
  Click to open pop
138
207
  &lt;/sonic-button&gt;
139
208
  </code></pre>
140
209
  <h2 id="keep-open-on-select">Keep open on select</h2>
141
- <p>By default, a click inside the content closes the pop, as well as a click outside. Add <code>data-on-select=&quot;keep&quot;</code> on the content, or on any of its elements, to keep the pop open when interacting with it.</p>
210
+ <p>By default, a click inside <strong><code>content</code></strong> closes the pop (same as an outside click). Set <strong><code>data-on-select=&quot;keep&quot;</code></strong> on the panel or a descendant to keep it open while selecting checkboxes, toggles, or menu items.</p>
211
+ <pre><code>&lt;div class=&quot;flex flex-wrap gap-2&quot;&gt;
212
+ &lt;sonic-pop class=&quot;inline-block&quot;&gt;
213
+ &lt;sonic-button&gt;Closes on select&lt;/sonic-button&gt;
214
+ &lt;div slot=&quot;content&quot; class=&quot;grid gap-2 p-3&quot;&gt;
215
+ &lt;sonic-checkbox&gt;Option A&lt;/sonic-checkbox&gt;
216
+ &lt;sonic-checkbox&gt;Option B&lt;/sonic-checkbox&gt;
217
+ &lt;/div&gt;
218
+ &lt;/sonic-pop&gt;
219
+ &lt;sonic-pop class=&quot;inline-block&quot;&gt;
220
+ &lt;sonic-button&gt;Stays open on select&lt;/sonic-button&gt;
221
+ &lt;div slot=&quot;content&quot; class=&quot;grid gap-2 p-3&quot; data-on-select=&quot;keep&quot;&gt;
222
+ &lt;sonic-checkbox&gt;Option A&lt;/sonic-checkbox&gt;
223
+ &lt;sonic-checkbox&gt;Option B&lt;/sonic-checkbox&gt;
224
+ &lt;/div&gt;
225
+ &lt;/sonic-pop&gt;
226
+ &lt;/div&gt;
227
+ </code></pre>
228
+ <h2 id="keyboard-and-dismissal">Keyboard and dismissal</h2>
229
+ <p><strong><code>ArrowDown</code></strong> on the trigger opens the pop when it is closed. <strong><code>Escape</code></strong> closes the most recently opened pop (capture phase, before ancestors such as <strong><code>sonic-modal</code></strong>) and returns focus to that trigger. Multiple pops on the page stack in open order for Escape.</p>
142
230
  <pre><code>&lt;sonic-pop class=&quot;inline-block&quot;&gt;
143
- &lt;sonic-button&gt;Closes on select&lt;/sonic-button&gt;
144
- &lt;div slot=&quot;content&quot; class=&quot;grid gap-2 p-3&quot;&gt;
145
- &lt;sonic-checkbox&gt;Option A&lt;/sonic-checkbox&gt;
146
- &lt;sonic-checkbox&gt;Option B&lt;/sonic-checkbox&gt;
147
- &lt;/div&gt;
148
- &lt;/sonic-pop&gt;
149
- &lt;sonic-pop class=&quot;inline-block&quot;&gt;
150
- &lt;sonic-button&gt;Stays open on select&lt;/sonic-button&gt;
151
- &lt;div slot=&quot;content&quot; class=&quot;grid gap-2 p-3&quot; data-on-select=&quot;keep&quot;&gt;
152
- &lt;sonic-checkbox&gt;Option A&lt;/sonic-checkbox&gt;
153
- &lt;sonic-checkbox&gt;Option B&lt;/sonic-checkbox&gt;
154
- &lt;/div&gt;
231
+ &lt;sonic-button&gt;Focus me — ArrowDown opens, Escape closes&lt;/sonic-button&gt;
232
+ &lt;sonic-menu slot=&quot;content&quot;&gt;
233
+ &lt;sonic-menu-item&gt;First item&lt;/sonic-menu-item&gt;
234
+ &lt;sonic-menu-item&gt;Second item&lt;/sonic-menu-item&gt;
235
+ &lt;/sonic-menu&gt;
155
236
  &lt;/sonic-pop&gt;
156
237
  </code></pre>
157
- <h2 id="keyboard">Keyboard</h2>
158
- <ul>
159
- <li><code>ArrowDown</code> on the trigger opens the pop.</li>
160
- <li><code>Escape</code> closes the last opened pop and gives focus back to its trigger.</li>
161
- </ul>
162
- <h2 id="methods-and-events">Methods and events</h2>
163
- <p><code>show()</code> and <code>hide()</code> open and close the pop programmatically (see <code>manual</code> above). The pop dispatches a <code>show</code> event when it opens and a <code>hide</code> event when it closes.</p>
164
- <pre><code class="language-js">const pop = document.querySelector(&quot;sonic-pop&quot;);
165
- pop.addEventListener(&quot;hide&quot;, () =&gt; console.log(&quot;pop closed&quot;));
166
- pop.show();
167
- </code></pre>
168
- <h2 id="styling">Styling</h2>
169
- <p>The content can be styled from outside with <code>::part(content)</code>.</p>
170
- <pre><code class="language-css">sonic-pop::part(content) {
171
- border-radius: 0;
172
- }
173
- </code></pre>
238
+ <h2 id="api-reference">API reference</h2>
239
+ <table>
240
+ <thead>
241
+ <tr>
242
+ <th>Attribute</th>
243
+ <th>Values</th>
244
+ <th>Description</th>
245
+ </tr>
246
+ </thead>
247
+ <tbody><tr>
248
+ <td><code>placement</code></td>
249
+ <td><code>bottom</code> (default) · <code>top</code> · <code>left</code> · <code>right</code> · <code>top-start</code> · <code>top-center</code> · <code>top-end</code> · <code>bottom-start</code> · <code>bottom-center</code> · <code>bottom-end</code> · <code>left-start</code> · <code>left-center</code> · <code>left-end</code> · <code>right-start</code> · <code>right-center</code> · <code>right-end</code></td>
250
+ <td>Side and alignment relative to the trigger; repositions while open and flips within the viewport</td>
251
+ </tr>
252
+ <tr>
253
+ <td><code>shadow</code></td>
254
+ <td><code>none</code> · <code>sm</code> · <code>md</code> · <code>lg</code> (default <code>lg</code>)</td>
255
+ <td>Box shadow on the <strong><code>content</code></strong> panel</td>
256
+ </tr>
257
+ <tr>
258
+ <td><code>inline</code></td>
259
+ <td>boolean</td>
260
+ <td>Baseline-align the host for inline triggers</td>
261
+ </tr>
262
+ <tr>
263
+ <td><code>noToggle</code></td>
264
+ <td>boolean</td>
265
+ <td>When open, trigger click does not close the pop</td>
266
+ </tr>
267
+ <tr>
268
+ <td><code>manual</code></td>
269
+ <td>boolean</td>
270
+ <td>Disable default trigger toggle; use <strong><code>show()</code></strong> / <strong><code>hide()</code></strong></td>
271
+ </tr>
272
+ </tbody></table>
273
+ <table>
274
+ <thead>
275
+ <tr>
276
+ <th>Slot</th>
277
+ <th>Description</th>
278
+ </tr>
279
+ </thead>
280
+ <tbody><tr>
281
+ <td><em>(default)</em></td>
282
+ <td>Trigger; listens for <strong><code>click</code></strong> and <strong><code>keydown</code></strong> (<code>ArrowDown</code> opens when closed) unless <strong><code>manual</code></strong></td>
283
+ </tr>
284
+ <tr>
285
+ <td><code>content</code></td>
286
+ <td>Floating panel; receives focus <strong><code>tabindex=&quot;0&quot;</code></strong> while open</td>
287
+ </tr>
288
+ </tbody></table>
289
+ <p><strong>Methods:</strong> <strong><code>show()</code></strong> · <strong><code>hide()</code></strong> on the host element.</p>
290
+ <p><strong>Events:</strong> <strong><code>show</code></strong> · <strong><code>hide</code></strong> (non-bubbling <strong><code>CustomEvent</code></strong>).</p>
291
+ <p><strong>Content attribute:</strong> <strong><code>data-on-select=&quot;keep&quot;</code></strong> on <strong><code>content</code></strong> or descendants prevents close-on-click inside the panel.</p>
174
292
 
175
293
  </article>
176
294
  </main>
@@ -3,9 +3,9 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Progress bar — Concorde</title>
7
- <meta name="description" content="Displays an indicator showing the completion progress of a task.">
8
- <meta name="keywords" content="Concorde, supersoniks, core/components/ui/progress/progress, progress, Progress bar, UI component, sonic-progress, web component">
6
+ <title>Progress — Concorde</title>
7
+ <meta name="description" content="Shows task completion on a value / max scale via a native &lt;progress&gt; bar. Omit value for an indeterminate loading animation. Put primary copy in the default slot and optional secondary text in remaini">
8
+ <meta name="keywords" content="Concorde, supersoniks, core/components/ui/progress/progress, progress, Progress, UI component, sonic-progress, web component, value, max, , remaining, invert, sonic-card, to **, ** (default ">
9
9
  <meta name="concorde-doc-id" content="core/components/ui/progress/progress">
10
10
  <link rel="canonical" href="https://concorde.supersoniks.org/crawl/core/components/ui/progress/progress.html">
11
11
  </head>
@@ -15,42 +15,115 @@
15
15
  </header>
16
16
  <main>
17
17
  <article>
18
- <p class="doc-lead" id="doc-summary"><strong>Concorde UI component — Progress bar</strong>. Displays an indicator showing the completion progress of a task. <span>Doc ID: <code>core/components/ui/progress/progress</code>. Keywords: Concorde, supersoniks, core/components/ui/progress/progress, progress, Progress bar, UI component, sonic-progress, web component. URL: <a href="https://concorde.supersoniks.org/crawl/core/components/ui/progress/progress.html">https://concorde.supersoniks.org/crawl/core/components/ui/progress/progress.html</a>.</span></p>
19
- <h1 id="progress-bar">Progress bar</h1>
20
- <p>Displays an indicator showing the completion progress of a task.</p>
18
+ <p class="doc-lead" id="doc-summary"><strong>Concorde UI component — Progress</strong>. Shows task completion on a value / max scale via a native &lt;progress&gt; bar. Omit value for an indeterminate loading animation. Put primary copy in the default slot and optional secondary text in remaini <span>Doc ID: <code>core/components/ui/progress/progress</code>. Keywords: Concorde, supersoniks, core/components/ui/progress/progress, progress, Progress, UI component, sonic-progress, web component, value, max, , remaining, invert, sonic-card, to **, ** (default . URL: <a href="https://concorde.supersoniks.org/crawl/core/components/ui/progress/progress.html">https://concorde.supersoniks.org/crawl/core/components/ui/progress/progress.html</a>.</span></p>
19
+ <h1 id="progress">Progress</h1>
20
+ <p>Shows <strong>task completion</strong> on a <strong><code>value</code></strong> / <strong><code>max</code></strong> scale via a native <code>&lt;progress&gt;</code> bar. Omit <strong><code>value</code></strong> for an <strong>indeterminate</strong> loading animation. Put primary copy in the default slot and optional secondary text in <strong><code>remaining</code></strong>; set <strong><code>invert</code></strong> when the bar sits on a colored surface such as <strong><code>sonic-card</code></strong>.</p>
21
+ <h2 id="basic-example">Basic example</h2>
22
+ <p>Set <strong><code>value</code></strong> from <code>0</code> to <strong><code>max</code></strong> (default <code>100</code>). Label text uses the type color.</p>
23
+ <pre><code>&lt;sonic-progress value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
24
+ </code></pre>
21
25
  <h2 id="indeterminate">Indeterminate</h2>
26
+ <p>With no <strong><code>value</code></strong>, the bar animates until progress is known.</p>
22
27
  <pre><code>&lt;sonic-progress&gt;&lt;/sonic-progress&gt;
23
28
  </code></pre>
24
- <h2 id="remaining">Remaining</h2>
25
- <pre><code>&lt;sonic-progress type=&quot;danger&quot; value=&quot;80&quot;&gt;
26
- 80% Used &lt;span slot=&quot;remaining&quot;&gt;20% left&lt;/span&gt;
27
- &lt;/sonic-progress&gt;
28
- </code></pre>
29
- <h2 id="sizes">Sizes</h2>
29
+ <h2 id="type">Type</h2>
30
+ <p>Semantic color follows <strong><code>type</code></strong>. With no <strong><code>type</code></strong>, behavior is <code>default</code>.</p>
30
31
  <pre><code>&lt;div class=&quot;grid gap-3&quot;&gt;
31
- &lt;sonic-progress size=&quot;2xs&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
32
- &lt;sonic-progress size=&quot;xs&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
33
- &lt;sonic-progress size=&quot;sm&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
34
- &lt;sonic-progress size=&quot;md&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
35
- &lt;sonic-progress size=&quot;lg&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
36
- &lt;sonic-progress size=&quot;xl&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
37
- &lt;sonic-progress size=&quot;2xl&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
38
- &lt;/div&gt;
32
+ &lt;sonic-progress value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
33
+ &lt;sonic-progress type=&quot;primary&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
34
+ &lt;sonic-progress type=&quot;neutral&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
35
+ &lt;sonic-progress type=&quot;info&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
36
+ &lt;sonic-progress type=&quot;warning&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
37
+ &lt;sonic-progress type=&quot;success&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
38
+ &lt;sonic-progress type=&quot;danger&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
39
+ &lt;/div&gt;
39
40
  </code></pre>
40
- <h2 id="type">Type</h2>
41
+ <h2 id="size">Size</h2>
42
+ <p>Bar height scales with typography via <strong><code>size</code></strong>. With no <strong><code>size</code></strong>, font size matches <strong><code>md</code></strong> (<code>1rem</code>).</p>
41
43
  <pre><code>&lt;div class=&quot;grid gap-3&quot;&gt;
42
- &lt;sonic-progress value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
43
- &lt;sonic-progress type=&quot;info&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
44
- &lt;sonic-progress type=&quot;warning&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
45
- &lt;sonic-progress type=&quot;success&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
46
- &lt;sonic-progress type=&quot;danger&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
47
- &lt;/div&gt;
44
+ &lt;sonic-progress size=&quot;2xs&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
45
+ &lt;sonic-progress size=&quot;xs&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
46
+ &lt;sonic-progress size=&quot;sm&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
47
+ &lt;sonic-progress size=&quot;md&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
48
+ &lt;sonic-progress size=&quot;lg&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
49
+ &lt;sonic-progress size=&quot;xl&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
50
+ &lt;sonic-progress size=&quot;2xl&quot; value=&quot;25&quot;&gt;25%&lt;/sonic-progress&gt;
51
+ &lt;/div&gt;
52
+ </code></pre>
53
+ <h2 id="default-and-remaining-slots">Default and remaining slots</h2>
54
+ <p>The default slot is the main label (left). <strong><code>remaining</code></strong> is right-aligned with lighter weight—use it for “left to complete” copy.</p>
55
+ <pre><code>&lt;sonic-progress type=&quot;danger&quot; value=&quot;80&quot;&gt;
56
+ 80% Used &lt;span slot=&quot;remaining&quot;&gt;20% left&lt;/span&gt;
57
+ &lt;/sonic-progress&gt;
48
58
  </code></pre>
49
59
  <h2 id="invert">Invert</h2>
50
- <pre><code>&lt;div class=&quot;bg-neutral-900 p-4 rounded-md&quot;&gt;
51
- &lt;sonic-progress type=&quot;invert&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
52
- &lt;/div&gt;
60
+ <p>On tinted backgrounds, <strong><code>invert</code></strong> adjusts track and fill tokens so the bar stays readable (pair with matching <strong><code>type</code></strong> on <strong><code>sonic-card</code></strong> or similar).</p>
61
+ <pre><code>&lt;div class=&quot;grid gap-3&quot;&gt;
62
+ &lt;sonic-card type=&quot;info&quot;&gt;
63
+ &lt;sonic-progress invert type=&quot;info&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
64
+ &lt;/sonic-card&gt;
65
+ &lt;sonic-card type=&quot;warning&quot;&gt;
66
+ &lt;sonic-progress invert type=&quot;warning&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
67
+ &lt;/sonic-card&gt;
68
+ &lt;sonic-card type=&quot;success&quot;&gt;
69
+ &lt;sonic-progress invert type=&quot;success&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
70
+ &lt;/sonic-card&gt;
71
+ &lt;sonic-card type=&quot;danger&quot;&gt;
72
+ &lt;sonic-progress invert type=&quot;danger&quot; value=&quot;50&quot;&gt;50%&lt;/sonic-progress&gt;
73
+ &lt;/sonic-card&gt;
74
+ &lt;/div&gt;
53
75
  </code></pre>
76
+ <h2 id="api-reference">API reference</h2>
77
+ <table>
78
+ <thead>
79
+ <tr>
80
+ <th>Attribute</th>
81
+ <th>Values</th>
82
+ <th>Description</th>
83
+ </tr>
84
+ </thead>
85
+ <tbody><tr>
86
+ <td><code>value</code></td>
87
+ <td>number</td>
88
+ <td>Completion amount; omit for indeterminate state</td>
89
+ </tr>
90
+ <tr>
91
+ <td><code>max</code></td>
92
+ <td>number (default <code>100</code>)</td>
93
+ <td>Upper bound for <strong><code>value</code></strong></td>
94
+ </tr>
95
+ <tr>
96
+ <td><code>type</code></td>
97
+ <td><code>default</code> (default) · <code>primary</code> · <code>neutral</code> · <code>warning</code> · <code>info</code> · <code>success</code> · <code>danger</code></td>
98
+ <td>Semantic bar and label color</td>
99
+ </tr>
100
+ <tr>
101
+ <td><code>size</code></td>
102
+ <td><code>2xs</code> · <code>xs</code> · <code>sm</code> · <code>md</code> · <code>lg</code> · <code>xl</code> · <code>2xl</code> · <code>inherit</code></td>
103
+ <td>Typography scale (bar height follows <code>em</code>)</td>
104
+ </tr>
105
+ <tr>
106
+ <td><code>invert</code></td>
107
+ <td>boolean</td>
108
+ <td>High-contrast tokens on colored backgrounds</td>
109
+ </tr>
110
+ </tbody></table>
111
+ <table>
112
+ <thead>
113
+ <tr>
114
+ <th>Slot</th>
115
+ <th>Description</th>
116
+ </tr>
117
+ </thead>
118
+ <tbody><tr>
119
+ <td><em>(default)</em></td>
120
+ <td>Primary label below the bar (left)</td>
121
+ </tr>
122
+ <tr>
123
+ <td><code>remaining</code></td>
124
+ <td>Secondary label below the bar (right)</td>
125
+ </tr>
126
+ </tbody></table>
54
127
 
55
128
  </article>
56
129
  </main>