@flowstack-ui/brick 0.1.11 → 0.2.0

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 (159) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/blockquote.json +68 -0
  3. package/dist/agents/blockquote.md +42 -0
  4. package/dist/agents/code-block.json +20 -4
  5. package/dist/agents/code-block.md +9 -4
  6. package/dist/agents/color-picker.json +34 -18
  7. package/dist/agents/color-picker.md +18 -13
  8. package/dist/agents/color-swatch.json +17 -5
  9. package/dist/agents/color-swatch.md +10 -5
  10. package/dist/agents/coverage.json +5095 -3374
  11. package/dist/agents/em.json +57 -0
  12. package/dist/agents/em.md +39 -0
  13. package/dist/agents/highlight.json +73 -0
  14. package/dist/agents/highlight.md +43 -0
  15. package/dist/agents/interface-composition.json +14 -7
  16. package/dist/agents/interface-composition.md +5 -2
  17. package/dist/agents/kbd.json +62 -0
  18. package/dist/agents/kbd.md +40 -0
  19. package/dist/agents/layer-selection.json +125 -5
  20. package/dist/agents/layer-selection.md +12 -2
  21. package/dist/agents/manifest.json +37 -1
  22. package/dist/agents/mark.json +56 -0
  23. package/dist/agents/mark.md +38 -0
  24. package/dist/agents/prose.json +82 -0
  25. package/dist/agents/prose.md +50 -0
  26. package/dist/blockquote.d.ts +2 -0
  27. package/dist/blockquote.d.ts.map +1 -0
  28. package/dist/blockquote.js +2 -0
  29. package/dist/blockquote.js.map +1 -0
  30. package/dist/components/blockquote/Blockquote.d.ts +33 -0
  31. package/dist/components/blockquote/Blockquote.d.ts.map +1 -0
  32. package/dist/components/blockquote/Blockquote.js +36 -0
  33. package/dist/components/blockquote/Blockquote.js.map +1 -0
  34. package/dist/components/blockquote/index.d.ts +2 -0
  35. package/dist/components/blockquote/index.d.ts.map +1 -0
  36. package/dist/components/blockquote/index.js +2 -0
  37. package/dist/components/blockquote/index.js.map +1 -0
  38. package/dist/components/code-block/CodeBlock.d.ts +36 -0
  39. package/dist/components/code-block/CodeBlock.d.ts.map +1 -1
  40. package/dist/components/code-block/CodeBlock.js +76 -12
  41. package/dist/components/code-block/CodeBlock.js.map +1 -1
  42. package/dist/components/code-block/context.d.ts +2 -0
  43. package/dist/components/code-block/context.d.ts.map +1 -1
  44. package/dist/components/code-block/context.js.map +1 -1
  45. package/dist/components/code-block/index.d.ts +1 -1
  46. package/dist/components/code-block/index.d.ts.map +1 -1
  47. package/dist/components/code-block/index.js +1 -1
  48. package/dist/components/code-block/index.js.map +1 -1
  49. package/dist/components/color-picker/ColorPicker.d.ts +83 -24
  50. package/dist/components/color-picker/ColorPicker.d.ts.map +1 -1
  51. package/dist/components/color-picker/ColorPicker.js +102 -10
  52. package/dist/components/color-picker/ColorPicker.js.map +1 -1
  53. package/dist/components/color-picker/index.d.ts +1 -1
  54. package/dist/components/color-picker/index.d.ts.map +1 -1
  55. package/dist/components/color-picker/index.js +1 -1
  56. package/dist/components/color-picker/index.js.map +1 -1
  57. package/dist/components/color-swatch/ColorSwatch.d.ts +3 -0
  58. package/dist/components/color-swatch/ColorSwatch.d.ts.map +1 -1
  59. package/dist/components/color-swatch/ColorSwatch.js +4 -4
  60. package/dist/components/color-swatch/ColorSwatch.js.map +1 -1
  61. package/dist/components/color-swatch/index.d.ts +1 -1
  62. package/dist/components/color-swatch/index.d.ts.map +1 -1
  63. package/dist/components/color-swatch/index.js.map +1 -1
  64. package/dist/components/em/Em.d.ts +9 -0
  65. package/dist/components/em/Em.d.ts.map +1 -0
  66. package/dist/components/em/Em.js +10 -0
  67. package/dist/components/em/Em.js.map +1 -0
  68. package/dist/components/em/index.d.ts +2 -0
  69. package/dist/components/em/index.d.ts.map +1 -0
  70. package/dist/components/em/index.js +2 -0
  71. package/dist/components/em/index.js.map +1 -0
  72. package/dist/components/highlight/Highlight.d.ts +9 -0
  73. package/dist/components/highlight/Highlight.d.ts.map +1 -0
  74. package/dist/components/highlight/Highlight.js +10 -0
  75. package/dist/components/highlight/Highlight.js.map +1 -0
  76. package/dist/components/highlight/index.d.ts +2 -0
  77. package/dist/components/highlight/index.d.ts.map +1 -0
  78. package/dist/components/highlight/index.js +2 -0
  79. package/dist/components/highlight/index.js.map +1 -0
  80. package/dist/components/kbd/Kbd.d.ts +13 -0
  81. package/dist/components/kbd/Kbd.d.ts.map +1 -0
  82. package/dist/components/kbd/Kbd.js +8 -0
  83. package/dist/components/kbd/Kbd.js.map +1 -0
  84. package/dist/components/kbd/index.d.ts +2 -0
  85. package/dist/components/kbd/index.d.ts.map +1 -0
  86. package/dist/components/kbd/index.js +2 -0
  87. package/dist/components/kbd/index.js.map +1 -0
  88. package/dist/components/mark/Mark.d.ts +13 -0
  89. package/dist/components/mark/Mark.d.ts.map +1 -0
  90. package/dist/components/mark/Mark.js +8 -0
  91. package/dist/components/mark/Mark.js.map +1 -0
  92. package/dist/components/mark/index.d.ts +2 -0
  93. package/dist/components/mark/index.d.ts.map +1 -0
  94. package/dist/components/mark/index.js +2 -0
  95. package/dist/components/mark/index.js.map +1 -0
  96. package/dist/components/prose/Prose.d.ts +12 -0
  97. package/dist/components/prose/Prose.d.ts.map +1 -0
  98. package/dist/components/prose/Prose.js +19 -0
  99. package/dist/components/prose/Prose.js.map +1 -0
  100. package/dist/components/prose/index.d.ts +2 -0
  101. package/dist/components/prose/index.d.ts.map +1 -0
  102. package/dist/components/prose/index.js +2 -0
  103. package/dist/components/prose/index.js.map +1 -0
  104. package/dist/em.d.ts +2 -0
  105. package/dist/em.d.ts.map +1 -0
  106. package/dist/em.js +2 -0
  107. package/dist/em.js.map +1 -0
  108. package/dist/highlight.d.ts +2 -0
  109. package/dist/highlight.d.ts.map +1 -0
  110. package/dist/highlight.js +2 -0
  111. package/dist/highlight.js.map +1 -0
  112. package/dist/index.d.ts +9 -3
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +8 -2
  115. package/dist/index.js.map +1 -1
  116. package/dist/kbd.d.ts +2 -0
  117. package/dist/kbd.d.ts.map +1 -0
  118. package/dist/kbd.js +2 -0
  119. package/dist/kbd.js.map +1 -0
  120. package/dist/mark.d.ts +2 -0
  121. package/dist/mark.d.ts.map +1 -0
  122. package/dist/mark.js +2 -0
  123. package/dist/mark.js.map +1 -0
  124. package/dist/prose.d.ts +2 -0
  125. package/dist/prose.d.ts.map +1 -0
  126. package/dist/prose.js +2 -0
  127. package/dist/prose.js.map +1 -0
  128. package/dist/styles/blockquote.css +2 -0
  129. package/dist/styles/blockquote.css.map +1 -0
  130. package/dist/styles/checkbox-group.css +1 -1
  131. package/dist/styles/checkbox-group.css.map +1 -1
  132. package/dist/styles/checkbox.css +1 -1
  133. package/dist/styles/checkbox.css.map +1 -1
  134. package/dist/styles/code-block.css +1 -1
  135. package/dist/styles/code-block.css.map +1 -1
  136. package/dist/styles/color-picker.css +1 -1
  137. package/dist/styles/color-picker.css.map +1 -1
  138. package/dist/styles/color-swatch.css +1 -1
  139. package/dist/styles/color-swatch.css.map +1 -1
  140. package/dist/styles/em.css +2 -0
  141. package/dist/styles/em.css.map +1 -0
  142. package/dist/styles/highlight.css +2 -0
  143. package/dist/styles/highlight.css.map +1 -0
  144. package/dist/styles/kbd.css +2 -0
  145. package/dist/styles/kbd.css.map +1 -0
  146. package/dist/styles/mark.css +2 -0
  147. package/dist/styles/mark.css.map +1 -0
  148. package/dist/styles/popover.css.map +1 -1
  149. package/dist/styles/prose.css +2 -0
  150. package/dist/styles/prose.css.map +1 -0
  151. package/dist/styles/segment-group.css +1 -1
  152. package/dist/styles/segment-group.css.map +1 -1
  153. package/dist/styles/sidebar.css +1 -1
  154. package/dist/styles/sidebar.css.map +1 -1
  155. package/dist/styles/slider.css.map +1 -1
  156. package/dist/styles.css +1 -1
  157. package/dist/styles.css.map +1 -1
  158. package/dist/theme-contract.json +1617 -162
  159. package/package.json +38 -4
package/README.md CHANGED
@@ -160,7 +160,7 @@ The complete component guides live with the source repository:
160
160
  | Accessibility | [Skip Link](https://github.com/flowstack-ui/brick/blob/main/docs/components/skip-link/README.md), [Visually Hidden](https://github.com/flowstack-ui/brick/blob/main/docs/components/visually-hidden/README.md) |
161
161
  | Data display | [Aspect Ratio](https://github.com/flowstack-ui/brick/blob/main/docs/components/aspect-ratio/README.md), [Data List](https://github.com/flowstack-ui/brick/blob/main/docs/components/data-list/README.md), [Data Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/data-grid/README.md), [Tree Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/tree-grid/README.md), [Tree](https://github.com/flowstack-ui/brick/blob/main/docs/components/tree/README.md), [Feed](https://github.com/flowstack-ui/brick/blob/main/docs/components/feed/README.md), [Swipeable Item](https://github.com/flowstack-ui/brick/blob/main/docs/components/swipeable-item/README.md), [Carousel](https://github.com/flowstack-ui/brick/blob/main/docs/components/carousel/README.md) |
162
162
  | Forms and choices | [Color Picker](https://github.com/flowstack-ui/brick/blob/main/docs/components/color-picker/README.md), [Form](https://github.com/flowstack-ui/brick/blob/main/docs/components/form/README.md), [Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/field/README.md), [Fieldset](https://github.com/flowstack-ui/brick/blob/main/docs/components/fieldset/README.md), [Input](https://github.com/flowstack-ui/brick/blob/main/docs/components/input/README.md), [Number Input](https://github.com/flowstack-ui/brick/blob/main/docs/components/number-input/README.md), [OTP Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/otp-field/README.md), [Password Toggle Field](https://github.com/flowstack-ui/brick/blob/main/docs/components/password-toggle-field/README.md), [Textarea](https://github.com/flowstack-ui/brick/blob/main/docs/components/textarea/README.md), [Select](https://github.com/flowstack-ui/brick/blob/main/docs/components/select/README.md), [Combobox](https://github.com/flowstack-ui/brick/blob/main/docs/components/combobox/README.md), [Multi Select](https://github.com/flowstack-ui/brick/blob/main/docs/components/multi-select/README.md), [File Upload](https://github.com/flowstack-ui/brick/blob/main/docs/components/file-upload/README.md), [Checkbox](https://github.com/flowstack-ui/brick/blob/main/docs/components/checkbox/README.md), [Checkbox Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/checkbox-group/README.md), [Radio Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/radio-group/README.md), [Switch](https://github.com/flowstack-ui/brick/blob/main/docs/components/switch/README.md), [Slider](https://github.com/flowstack-ui/brick/blob/main/docs/components/slider/README.md), [Rating](https://github.com/flowstack-ui/brick/blob/main/docs/components/rating/README.md) |
163
- | Content and status | [Text](https://github.com/flowstack-ui/brick/blob/main/docs/components/text/README.md), [Icon](https://github.com/flowstack-ui/brick/blob/main/docs/components/icon/README.md), [Image](https://github.com/flowstack-ui/brick/blob/main/docs/components/image/README.md), [Code](https://github.com/flowstack-ui/brick/blob/main/docs/components/code/README.md), [Code Block](https://github.com/flowstack-ui/brick/blob/main/docs/components/code-block/README.md), [Avatar](https://github.com/flowstack-ui/brick/blob/main/docs/components/avatar/README.md), [Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/badge/README.md), [Chip](https://github.com/flowstack-ui/brick/blob/main/docs/components/chip/README.md), [Notification Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/notification-badge/README.md), [Status](https://github.com/flowstack-ui/brick/blob/main/docs/components/status/README.md), [Color Swatch](https://github.com/flowstack-ui/brick/blob/main/docs/components/color-swatch/README.md), [Card](https://github.com/flowstack-ui/brick/blob/main/docs/components/card/README.md), [List](https://github.com/flowstack-ui/brick/blob/main/docs/components/list/README.md), [Table](https://github.com/flowstack-ui/brick/blob/main/docs/components/table/README.md), [Divider](https://github.com/flowstack-ui/brick/blob/main/docs/components/divider/README.md), [Collapsible](https://github.com/flowstack-ui/brick/blob/main/docs/components/collapsible/README.md), [Accordion](https://github.com/flowstack-ui/brick/blob/main/docs/components/accordion/README.md), [Skeleton](https://github.com/flowstack-ui/brick/blob/main/docs/components/skeleton/README.md), [Progress](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress/README.md), [Progress Circle](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress-circle/README.md), [Toast](https://github.com/flowstack-ui/brick/blob/main/docs/components/toast/README.md) |
163
+ | Content and status | [Text](https://github.com/flowstack-ui/brick/blob/main/docs/components/text/README.md), [Em](https://github.com/flowstack-ui/brick/blob/main/docs/components/em/README.md), [Mark](https://github.com/flowstack-ui/brick/blob/main/docs/components/mark/README.md), [Highlight](https://github.com/flowstack-ui/brick/blob/main/docs/components/highlight/README.md), [Prose](https://github.com/flowstack-ui/brick/blob/main/docs/components/prose/README.md), [Kbd](https://github.com/flowstack-ui/brick/blob/main/docs/components/kbd/README.md), [Blockquote](https://github.com/flowstack-ui/brick/blob/main/docs/components/blockquote/README.md), [Icon](https://github.com/flowstack-ui/brick/blob/main/docs/components/icon/README.md), [Image](https://github.com/flowstack-ui/brick/blob/main/docs/components/image/README.md), [Code](https://github.com/flowstack-ui/brick/blob/main/docs/components/code/README.md), [Code Block](https://github.com/flowstack-ui/brick/blob/main/docs/components/code-block/README.md), [Avatar](https://github.com/flowstack-ui/brick/blob/main/docs/components/avatar/README.md), [Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/badge/README.md), [Chip](https://github.com/flowstack-ui/brick/blob/main/docs/components/chip/README.md), [Notification Badge](https://github.com/flowstack-ui/brick/blob/main/docs/components/notification-badge/README.md), [Status](https://github.com/flowstack-ui/brick/blob/main/docs/components/status/README.md), [Color Swatch](https://github.com/flowstack-ui/brick/blob/main/docs/components/color-swatch/README.md), [Card](https://github.com/flowstack-ui/brick/blob/main/docs/components/card/README.md), [List](https://github.com/flowstack-ui/brick/blob/main/docs/components/list/README.md), [Table](https://github.com/flowstack-ui/brick/blob/main/docs/components/table/README.md), [Divider](https://github.com/flowstack-ui/brick/blob/main/docs/components/divider/README.md), [Collapsible](https://github.com/flowstack-ui/brick/blob/main/docs/components/collapsible/README.md), [Accordion](https://github.com/flowstack-ui/brick/blob/main/docs/components/accordion/README.md), [Skeleton](https://github.com/flowstack-ui/brick/blob/main/docs/components/skeleton/README.md), [Progress](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress/README.md), [Progress Circle](https://github.com/flowstack-ui/brick/blob/main/docs/components/progress-circle/README.md), [Toast](https://github.com/flowstack-ui/brick/blob/main/docs/components/toast/README.md) |
164
164
  | Contextual overlays | [Tooltip](https://github.com/flowstack-ui/brick/blob/main/docs/components/tooltip/README.md), [Hover Card](https://github.com/flowstack-ui/brick/blob/main/docs/components/hover-card/README.md), [Popover](https://github.com/flowstack-ui/brick/blob/main/docs/components/popover/README.md), [Dropdown Menu](https://github.com/flowstack-ui/brick/blob/main/docs/components/dropdown-menu/README.md), [Context Menu](https://github.com/flowstack-ui/brick/blob/main/docs/components/context-menu/README.md), [Menubar](https://github.com/flowstack-ui/brick/blob/main/docs/components/menubar/README.md) |
165
165
  | Modal surfaces | [Dialog](https://github.com/flowstack-ui/brick/blob/main/docs/components/dialog/README.md), [Alert Dialog](https://github.com/flowstack-ui/brick/blob/main/docs/components/alert-dialog/README.md), [Drawer](https://github.com/flowstack-ui/brick/blob/main/docs/components/drawer/README.md) |
166
166
  | Navigation and layout | [Appearance](https://github.com/flowstack-ui/brick/blob/main/docs/components/appearance/README.md), [Breadcrumb](https://github.com/flowstack-ui/brick/blob/main/docs/components/breadcrumb/README.md), [Tabs](https://github.com/flowstack-ui/brick/blob/main/docs/components/tabs/README.md), [Navigation Menu](https://github.com/flowstack-ui/brick/blob/main/docs/components/navigation-menu/README.md), [Bottom Navigation](https://github.com/flowstack-ui/brick/blob/main/docs/components/bottom-navigation/README.md), [Link](https://github.com/flowstack-ui/brick/blob/main/docs/components/link/README.md), [Link Box](https://github.com/flowstack-ui/brick/blob/main/docs/components/link-box/README.md), [Nav List](https://github.com/flowstack-ui/brick/blob/main/docs/components/nav-list/README.md), [Sidebar](https://github.com/flowstack-ui/brick/blob/main/docs/components/sidebar/README.md), [App Bar](https://github.com/flowstack-ui/brick/blob/main/docs/components/app-bar/README.md), [Stack](https://github.com/flowstack-ui/brick/blob/main/docs/components/stack/README.md), [Group](https://github.com/flowstack-ui/brick/blob/main/docs/components/group/README.md), [Grid](https://github.com/flowstack-ui/brick/blob/main/docs/components/grid/README.md), [Container](https://github.com/flowstack-ui/brick/blob/main/docs/components/container/README.md), [Section](https://github.com/flowstack-ui/brick/blob/main/docs/components/section/README.md), [Frame](https://github.com/flowstack-ui/brick/blob/main/docs/components/frame/README.md), [Bleed](https://github.com/flowstack-ui/brick/blob/main/docs/components/bleed/README.md), [Show](https://github.com/flowstack-ui/brick/blob/main/docs/components/show/README.md), [Hide](https://github.com/flowstack-ui/brick/blob/main/docs/components/hide/README.md), [Surface](https://github.com/flowstack-ui/brick/blob/main/docs/components/surface/README.md), [Scroll Area](https://github.com/flowstack-ui/brick/blob/main/docs/components/scroll-area/README.md) |
@@ -0,0 +1,68 @@
1
+ {
2
+ "schema": "flowstack.agent-component.v1",
3
+ "id": "blockquote",
4
+ "name": "Blockquote",
5
+ "package": "@flowstack-ui/brick",
6
+ "layer": "brick",
7
+ "kind": "component",
8
+ "purpose": "Compose an extended quotation, source URL, and optional attribution with correct native structure and finished Brick styling.",
9
+ "useWhen": [
10
+ "An extended quotation and optional attribution form one self-contained content unit."
11
+ ],
12
+ "avoidWhen": [
13
+ {
14
+ "condition": "The quotation is inline within a sentence.",
15
+ "useInstead": "native q inside the surrounding content owner"
16
+ },
17
+ {
18
+ "condition": "The interface is a testimonial card with media, ratings, or actions.",
19
+ "useInstead": "Card or a product Block composed with Blockquote"
20
+ }
21
+ ],
22
+ "composition": [
23
+ "Place Blockquote.Content and optional Blockquote.Caption as siblings inside Blockquote.Root; put the source URL on Content through cite.",
24
+ "Use Blockquote.Cite inside Caption only for a referenced work or source, not merely for the person quoted."
25
+ ],
26
+ "rules": [
27
+ {
28
+ "id": "blockquote-native",
29
+ "level": "must",
30
+ "statement": "Preserve figure Root, blockquote Content, sibling figcaption Caption, and native cite Cite."
31
+ },
32
+ {
33
+ "id": "blockquote-attribution",
34
+ "level": "must",
35
+ "statement": "Keep attribution outside Content so it is not represented as part of the quotation."
36
+ },
37
+ {
38
+ "id": "blockquote-recipes",
39
+ "level": "must",
40
+ "statement": "Select only the documented accent, surface, or plain variant and start, center, or end alignment."
41
+ },
42
+ {
43
+ "id": "blockquote-icon",
44
+ "level": "must",
45
+ "statement": "Keep Icon decorative unless a consumer intentionally overrides aria-hidden for meaningful custom content."
46
+ },
47
+ {
48
+ "id": "blockquote-css",
49
+ "level": "must",
50
+ "statement": "Load styles.css or core.css plus blockquote.css."
51
+ }
52
+ ],
53
+ "commonMistakes": [
54
+ {
55
+ "mistake": "Putting the author or source inside Blockquote.Content.",
56
+ "correction": "Render attribution in sibling Blockquote.Caption and use Cite only for a work or source title."
57
+ }
58
+ ],
59
+ "validation": [
60
+ "Confirm native figure, blockquote, figcaption, and cite mapping; source URL forwarding; logical alignment; selection and copy; forced colors; zoom; text spacing; localization; RTL; and CSS delivery.",
61
+ "Confirm Blockquote adds no tab stop, role, interaction, or application provenance policy."
62
+ ],
63
+ "related": [
64
+ "text",
65
+ "mark",
66
+ "interface-composition"
67
+ ]
68
+ }
@@ -0,0 +1,42 @@
1
+ # Blockquote agent guide
2
+
3
+ ## Purpose
4
+
5
+ Compose an extended quotation, source URL, and optional attribution with correct native structure and finished Brick styling.
6
+
7
+ ## Use when
8
+
9
+ - An extended quotation and optional attribution form one self-contained content unit.
10
+
11
+ ## Choose something else when
12
+
13
+ - The quotation is inline within a sentence. Use native q inside the surrounding content owner.
14
+ - The interface is a testimonial card with media, ratings, or actions. Use Card or a product Block composed with Blockquote.
15
+
16
+ ## Required composition
17
+
18
+ - Place Blockquote.Content and optional Blockquote.Caption as siblings inside Blockquote.Root; put the source URL on Content through cite.
19
+ - Use Blockquote.Cite inside Caption only for a referenced work or source, not merely for the person quoted.
20
+
21
+ ## Rules
22
+
23
+ - **MUST:** Preserve figure Root, blockquote Content, sibling figcaption Caption, and native cite Cite.
24
+ - **MUST:** Keep attribution outside Content so it is not represented as part of the quotation.
25
+ - **MUST:** Select only the documented accent, surface, or plain variant and start, center, or end alignment.
26
+ - **MUST:** Keep Icon decorative unless a consumer intentionally overrides aria-hidden for meaningful custom content.
27
+ - **MUST:** Load styles.css or core.css plus blockquote.css.
28
+
29
+ ## Common mistakes
30
+
31
+ - **Avoid:** Putting the author or source inside Blockquote.Content. **Instead:** Render attribution in sibling Blockquote.Caption and use Cite only for a work or source title.
32
+
33
+ ## Validation checklist
34
+
35
+ - Confirm native figure, blockquote, figcaption, and cite mapping; source URL forwarding; logical alignment; selection and copy; forced colors; zoom; text spacing; localization; RTL; and CSS delivery.
36
+ - Confirm Blockquote adds no tab stop, role, interaction, or application provenance policy.
37
+
38
+ ## Related guidance
39
+
40
+ - `text`
41
+ - `mark`
42
+ - `interface-composition`
@@ -22,8 +22,9 @@
22
22
  "composition": [
23
23
  "Pass the exact plain-text source to Root value, then place Content inside Root and give focusable Content a specific accessible label.",
24
24
  "Author Header, Title, Language, Actions, CopyTrigger, CopyStatus, and CopyIndicator only when the interface needs those optional parts.",
25
- "For syntax highlighting, generate trusted React token nodes outside Brick and pass them to Content while keeping Root value identical to the plain text that must be copied.",
26
- "Give the Code Block a bounded parent when vertical page or panel layout requires a fixed scrolling region; Content owns the code's horizontal overflow."
25
+ "For syntax highlighting, pass a synchronous adapter or trusted React token nodes to Content while keeping Root value identical to the plain text that must be copied.",
26
+ "Use Line for authored line numbers, highlighting, focus, additions, and removals; metadata remains independent so one line can carry more than one relevant state.",
27
+ "Use Content maxLines for a bounded scroll region. For expansion, put bounded Content in CollapsePreview, unbounded Content in CollapseContent, and author CollapseTrigger so Brick Collapsible owns the real disclosure relationship and lifecycle."
27
28
  ],
28
29
  "rules": [
29
30
  {
@@ -34,7 +35,7 @@
34
35
  {
35
36
  "id": "code-block-highlighting-owner",
36
37
  "level": "must",
37
- "statement": "Keep tokenization, language loading, and syntax palettes in a consumer adapter; Brick accepts trusted React nodes and does not bundle a highlighter or unsafe HTML path."
38
+ "statement": "Keep tokenization, language loading, and syntax palettes in a pure synchronous consumer adapter; Brick accepts trusted React nodes and does not bundle a highlighter or unsafe HTML path."
38
39
  },
39
40
  {
40
41
  "id": "code-block-scroll-owner",
@@ -46,6 +47,16 @@
46
47
  "level": "must",
47
48
  "statement": "Give every focusable Content region a specific aria-label or aria-labelledby, especially when several examples share one page."
48
49
  },
50
+ {
51
+ "id": "code-block-line-metadata",
52
+ "level": "must",
53
+ "statement": "Author Line metadata from the authoritative source or trusted adapter output; do not infer diffs, focus, or highlighting from visual tokens."
54
+ },
55
+ {
56
+ "id": "code-block-bounded-access",
57
+ "level": "must",
58
+ "statement": "Keep standalone maxLines content reachable through its focusable viewport; for expansion, pair CollapsePreview and CollapseContent with an accessible CollapseTrigger so only the current source view is exposed."
59
+ },
49
60
  {
50
61
  "id": "code-block-css",
51
62
  "level": "must",
@@ -60,16 +71,21 @@
60
71
  {
61
72
  "mistake": "Adding a header, language label, copy action, or status region merely because those parts exist.",
62
73
  "correction": "Author only the optional anatomy required by the surrounding interface."
74
+ },
75
+ {
76
+ "mistake": "Clipping a long code block with application CSS and no reachable overflow or expansion control.",
77
+ "correction": "Use Content maxLines for bounded scrolling or compose CollapsePreview, CollapseContent, and CollapseTrigger for an accessible full-source path."
63
78
  }
64
79
  ],
65
80
  "validation": [
66
81
  "Confirm the rendered tokens and copied plain text match exactly, unsafe HTML is absent, and copy success, failure, concurrency, and status wording remain truthful when copy anatomy is present.",
67
- "Check keyboard focus, uniquely named overflow landmarks, long-line scrolling or wrapping, mobile text sizing, zoom, selection, RTL/LTR, light and dark syntax contrast, and CSS delivery."
82
+ "Check keyboard focus, uniquely named overflow landmarks, line metadata, bounded scrolling or collapse expansion, long-line scrolling or wrapping, mobile text sizing, zoom, selection, RTL/LTR, light and dark syntax contrast, and CSS delivery."
68
83
  ],
69
84
  "related": [
70
85
  "code",
71
86
  "scroll-area",
72
87
  "button",
88
+ "collapsible",
73
89
  "tabs",
74
90
  "interface-composition"
75
91
  ]
@@ -17,31 +17,36 @@ Present preserved multi-line technical source with native scrolling, explicit me
17
17
 
18
18
  - Pass the exact plain-text source to Root value, then place Content inside Root and give focusable Content a specific accessible label.
19
19
  - Author Header, Title, Language, Actions, CopyTrigger, CopyStatus, and CopyIndicator only when the interface needs those optional parts.
20
- - For syntax highlighting, generate trusted React token nodes outside Brick and pass them to Content while keeping Root value identical to the plain text that must be copied.
21
- - Give the Code Block a bounded parent when vertical page or panel layout requires a fixed scrolling region; Content owns the code's horizontal overflow.
20
+ - For syntax highlighting, pass a synchronous adapter or trusted React token nodes to Content while keeping Root value identical to the plain text that must be copied.
21
+ - Use Line for authored line numbers, highlighting, focus, additions, and removals; metadata remains independent so one line can carry more than one relevant state.
22
+ - Use Content maxLines for a bounded scroll region. For expansion, put bounded Content in CollapsePreview, unbounded Content in CollapseContent, and author CollapseTrigger so Brick Collapsible owns the real disclosure relationship and lifecycle.
22
23
 
23
24
  ## Rules
24
25
 
25
26
  - **MUST:** Keep Root value authoritative and exactly aligned with rendered highlighted content so copy behavior never depends on rendered textContent.
26
- - **MUST:** Keep tokenization, language loading, and syntax palettes in a consumer adapter; Brick accepts trusted React nodes and does not bundle a highlighter or unsafe HTML path.
27
+ - **MUST:** Keep tokenization, language loading, and syntax palettes in a pure synchronous consumer adapter; Brick accepts trusted React nodes and does not bundle a highlighter or unsafe HTML path.
27
28
  - **MUST:** Let Content own canonical pre, code, focus, and horizontal scrolling instead of rebuilding them with a separate ScrollArea or native pre element.
28
29
  - **MUST:** Give every focusable Content region a specific aria-label or aria-labelledby, especially when several examples share one page.
30
+ - **MUST:** Author Line metadata from the authoritative source or trusted adapter output; do not infer diffs, focus, or highlighting from visual tokens.
31
+ - **MUST:** Keep standalone maxLines content reachable through its focusable viewport; for expansion, pair CollapsePreview and CollapseContent with an accessible CollapseTrigger so only the current source view is exposed.
29
32
  - **MUST:** Load styles.css or core.css plus code-block.css and its documented component dependencies.
30
33
 
31
34
  ## Common mistakes
32
35
 
33
36
  - **Avoid:** Rendering highlighted HTML with dangerouslySetInnerHTML, copying from token text, or nesting another pre and ScrollArea inside Content. **Instead:** Render trusted React token spans, preserve the original string in Root value, and let Content own the canonical code viewport.
34
37
  - **Avoid:** Adding a header, language label, copy action, or status region merely because those parts exist. **Instead:** Author only the optional anatomy required by the surrounding interface.
38
+ - **Avoid:** Clipping a long code block with application CSS and no reachable overflow or expansion control. **Instead:** Use Content maxLines for bounded scrolling or compose CollapsePreview, CollapseContent, and CollapseTrigger for an accessible full-source path.
35
39
 
36
40
  ## Validation checklist
37
41
 
38
42
  - Confirm the rendered tokens and copied plain text match exactly, unsafe HTML is absent, and copy success, failure, concurrency, and status wording remain truthful when copy anatomy is present.
39
- - Check keyboard focus, uniquely named overflow landmarks, long-line scrolling or wrapping, mobile text sizing, zoom, selection, RTL/LTR, light and dark syntax contrast, and CSS delivery.
43
+ - Check keyboard focus, uniquely named overflow landmarks, line metadata, bounded scrolling or collapse expansion, long-line scrolling or wrapping, mobile text sizing, zoom, selection, RTL/LTR, light and dark syntax contrast, and CSS delivery.
40
44
 
41
45
  ## Related guidance
42
46
 
43
47
  - `code`
44
48
  - `scroll-area`
45
49
  - `button`
50
+ - `collapsible`
46
51
  - `tabs`
47
52
  - `interface-composition`
@@ -5,9 +5,10 @@
5
5
  "package": "@flowstack-ui/brick",
6
6
  "layer": "brick",
7
7
  "kind": "component",
8
- "purpose": "Edit, choose, and submit an opaque hexadecimal color through a finished text, native chooser, preset, or optional floating composition.",
8
+ "purpose": "Edit, inspect, choose, and submit one color through a finished popup or inline editor with area, channel, format, preset, native chooser, and EyeDropper paths.",
9
9
  "useWhen": [
10
- "A form needs one #rrggbb color value selected through editable text, the browser chooser, named presets, or a popover that combines them."
10
+ "A form, editor, or settings surface needs one color value with a finished visual editor.",
11
+ "Users need alpha, RGB, HSL, HSB, channel sliders, named presets, or a progressive platform color-picking path."
11
12
  ],
12
13
  "avoidWhen": [
13
14
  {
@@ -15,20 +16,26 @@
15
16
  "useInstead": "Color Swatch"
16
17
  },
17
18
  {
18
- "condition": "The task requires alpha, gradients, color-space conversion, channels, an eyedropper, or contrast analysis.",
19
- "useInstead": "an application-owned specialist until Atom releases that behavior"
19
+ "condition": "The task requires gradients, automatic color naming, contrast scoring, palette persistence, or a color wheel.",
20
+ "useInstead": "application-owned specialist behavior composed around Color Picker"
20
21
  }
21
22
  ],
22
23
  "composition": [
23
24
  "Place Label and Control inside Root; include HiddenInput when the value participates in native form submission.",
24
- "Compose Trigger with Content for a floating picker, or omit both for inline editing.",
25
- "Put ColorSwatch.Root inside Trigger and SwatchTrigger for finished previews while the surrounding control carries the accessible name and selected state."
25
+ "For a popup, compose Trigger, Positioner, and Content. For an always-visible editor, set Root inline and render Content directly.",
26
+ "Build the visual editor from Area, ChannelSlider, format controls, channel inputs, and SwatchGroup; ValueSwatch and ValueText expose the current value.",
27
+ "Place SwatchIndicator inside Swatch or ValueSwatch whenever selection needs a visible non-color cue."
26
28
  ],
27
29
  "rules": [
30
+ {
31
+ "id": "color-picker-ownership",
32
+ "level": "must",
33
+ "statement": "Use Brick parts for the finished interface and keep parsing, format conversion, selection, focus, dismissal, and form state in the exact Atom-backed machine."
34
+ },
28
35
  {
29
36
  "id": "color-picker-label",
30
37
  "level": "must",
31
- "statement": "Give Input and NativeInput accessible names through Label or explicit aria-label values."
38
+ "statement": "Give the primary editable or native input an accessible name through Label or an explicit aria-label."
32
39
  },
33
40
  {
34
41
  "id": "color-picker-form",
@@ -36,37 +43,46 @@
36
43
  "statement": "Provide name to Root and render exactly one HiddenInput when the color must submit."
37
44
  },
38
45
  {
39
- "id": "color-picker-hex",
46
+ "id": "color-picker-popup",
47
+ "level": "must",
48
+ "statement": "Wrap popup Content in Positioner; do not recreate positioning, focus restoration, or outside dismissal."
49
+ },
50
+ {
51
+ "id": "color-picker-selection",
40
52
  "level": "must",
41
- "statement": "Use #rgb or #rrggbb; this release intentionally supports opaque hexadecimal values only."
53
+ "statement": "Name every SwatchTrigger and render SwatchIndicator or an equivalent visible non-color selected cue."
42
54
  },
43
55
  {
44
56
  "id": "color-picker-css",
45
57
  "level": "must",
46
- "statement": "Load styles.css, or core.css plus both color-picker.css and color-swatch.css when swatches are composed."
58
+ "statement": "Load styles.css, or core.css plus color-picker.css for modular delivery."
47
59
  },
48
60
  {
49
- "id": "color-picker-preset-name",
61
+ "id": "color-picker-platform",
50
62
  "level": "should",
51
- "statement": "Give presets human-readable names; do not rely on color alone or a raw hex string when a product name exists."
63
+ "statement": "Treat NativeInput and EyeDropperTrigger as optional platform enhancements, not the only way to edit the color."
52
64
  }
53
65
  ],
54
66
  "commonMistakes": [
55
67
  {
56
- "mistake": "Reimplementing color parsing, picker state, or Popover behavior in Brick or application code.",
57
- "correction": "Use the Atom-backed ColorPicker parts and controlled props."
68
+ "mistake": "Reimplementing color conversion, pointer math, keyboard state, or popup behavior in Brick or application code.",
69
+ "correction": "Compose the released ColorPicker anatomy and controlled callbacks."
70
+ },
71
+ {
72
+ "mistake": "Putting popup Content beside Root without Positioner.",
73
+ "correction": "Use Trigger, Positioner, and Content as the released popup composition."
58
74
  },
59
75
  {
60
- "mistake": "Naming both Input and HiddenInput for form submission.",
76
+ "mistake": "Naming both visible inputs and HiddenInput for submission.",
61
77
  "correction": "Put name on Root and render one HiddenInput."
62
78
  },
63
79
  {
64
- "mistake": "Assuming Chakra's area, alpha, channel, format, or eyedropper parts exist.",
65
- "correction": "Stay within the released Brick anatomy and treat richer behavior as Atom-first future work."
80
+ "mistake": "Using raw color alone to show the selected preset.",
81
+ "correction": "Render SwatchIndicator and an accessible preset name."
66
82
  }
67
83
  ],
68
84
  "validation": [
69
- "Test text, native, preset, controlled, disabled, read-only, invalid, form submit/reset, Escape/focus restoration, light/dark, forced-colors, narrow/zoom, RTL, and non-color selection cues."
85
+ "Test area and channel synchronization, alpha, RGB/HSL/HSB format changes, presets, text/native/EyeDropper paths, controlled state, popup focus and dismissal, disabled/read-only/invalid, form submit/reset, light/dark, forced colors, reduced motion, narrow/zoom, RTL, and non-color selection cues."
70
86
  ],
71
87
  "related": [
72
88
  "color-swatch",
@@ -2,40 +2,45 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Edit, choose, and submit an opaque hexadecimal color through a finished text, native chooser, preset, or optional floating composition.
5
+ Edit, inspect, choose, and submit one color through a finished popup or inline editor with area, channel, format, preset, native chooser, and EyeDropper paths.
6
6
 
7
7
  ## Use when
8
8
 
9
- - A form needs one #rrggbb color value selected through editable text, the browser chooser, named presets, or a popover that combines them.
9
+ - A form, editor, or settings surface needs one color value with a finished visual editor.
10
+ - Users need alpha, RGB, HSL, HSB, channel sliders, named presets, or a progressive platform color-picking path.
10
11
 
11
12
  ## Choose something else when
12
13
 
13
14
  - The interface only previews a color. Use Color Swatch.
14
- - The task requires alpha, gradients, color-space conversion, channels, an eyedropper, or contrast analysis. Use an application-owned specialist until Atom releases that behavior.
15
+ - The task requires gradients, automatic color naming, contrast scoring, palette persistence, or a color wheel. Use application-owned specialist behavior composed around Color Picker.
15
16
 
16
17
  ## Required composition
17
18
 
18
19
  - Place Label and Control inside Root; include HiddenInput when the value participates in native form submission.
19
- - Compose Trigger with Content for a floating picker, or omit both for inline editing.
20
- - Put ColorSwatch.Root inside Trigger and SwatchTrigger for finished previews while the surrounding control carries the accessible name and selected state.
20
+ - For a popup, compose Trigger, Positioner, and Content. For an always-visible editor, set Root inline and render Content directly.
21
+ - Build the visual editor from Area, ChannelSlider, format controls, channel inputs, and SwatchGroup; ValueSwatch and ValueText expose the current value.
22
+ - Place SwatchIndicator inside Swatch or ValueSwatch whenever selection needs a visible non-color cue.
21
23
 
22
24
  ## Rules
23
25
 
24
- - **MUST:** Give Input and NativeInput accessible names through Label or explicit aria-label values.
26
+ - **MUST:** Use Brick parts for the finished interface and keep parsing, format conversion, selection, focus, dismissal, and form state in the exact Atom-backed machine.
27
+ - **MUST:** Give the primary editable or native input an accessible name through Label or an explicit aria-label.
25
28
  - **MUST:** Provide name to Root and render exactly one HiddenInput when the color must submit.
26
- - **MUST:** Use #rgb or #rrggbb; this release intentionally supports opaque hexadecimal values only.
27
- - **MUST:** Load styles.css, or core.css plus both color-picker.css and color-swatch.css when swatches are composed.
28
- - **SHOULD:** Give presets human-readable names; do not rely on color alone or a raw hex string when a product name exists.
29
+ - **MUST:** Wrap popup Content in Positioner; do not recreate positioning, focus restoration, or outside dismissal.
30
+ - **MUST:** Name every SwatchTrigger and render SwatchIndicator or an equivalent visible non-color selected cue.
31
+ - **MUST:** Load styles.css, or core.css plus color-picker.css for modular delivery.
32
+ - **SHOULD:** Treat NativeInput and EyeDropperTrigger as optional platform enhancements, not the only way to edit the color.
29
33
 
30
34
  ## Common mistakes
31
35
 
32
- - **Avoid:** Reimplementing color parsing, picker state, or Popover behavior in Brick or application code. **Instead:** Use the Atom-backed ColorPicker parts and controlled props.
33
- - **Avoid:** Naming both Input and HiddenInput for form submission. **Instead:** Put name on Root and render one HiddenInput.
34
- - **Avoid:** Assuming Chakra's area, alpha, channel, format, or eyedropper parts exist. **Instead:** Stay within the released Brick anatomy and treat richer behavior as Atom-first future work.
36
+ - **Avoid:** Reimplementing color conversion, pointer math, keyboard state, or popup behavior in Brick or application code. **Instead:** Compose the released ColorPicker anatomy and controlled callbacks.
37
+ - **Avoid:** Putting popup Content beside Root without Positioner. **Instead:** Use Trigger, Positioner, and Content as the released popup composition.
38
+ - **Avoid:** Naming both visible inputs and HiddenInput for submission. **Instead:** Put name on Root and render one HiddenInput.
39
+ - **Avoid:** Using raw color alone to show the selected preset. **Instead:** Render SwatchIndicator and an accessible preset name.
35
40
 
36
41
  ## Validation checklist
37
42
 
38
- - Test text, native, preset, controlled, disabled, read-only, invalid, form submit/reset, Escape/focus restoration, light/dark, forced-colors, narrow/zoom, RTL, and non-color selection cues.
43
+ - Test area and channel synchronization, alpha, RGB/HSL/HSB format changes, presets, text/native/EyeDropper paths, controlled state, popup focus and dismissal, disabled/read-only/invalid, form submit/reset, light/dark, forced colors, reduced motion, narrow/zoom, RTL, and non-color selection cues.
39
44
 
40
45
  ## Related guidance
41
46
 
@@ -5,7 +5,7 @@
5
5
  "package": "@flowstack-ui/brick",
6
6
  "layer": "brick",
7
7
  "kind": "component",
8
- "purpose": "Preview one color or a compact mix of colors with a finished alpha-aware visual treatment.",
8
+ "purpose": "Preview one color or a compact mix of colors with a finished alpha-aware visual treatment and closed shape recipes.",
9
9
  "useWhen": [
10
10
  "A selected, available, saved, or documented color needs a compact visual preview."
11
11
  ],
@@ -16,7 +16,9 @@
16
16
  }
17
17
  ],
18
18
  "composition": [
19
- "Render Root for one color and Mix for two or more colors; place the swatch inside the owning control when it represents a selectable option."
19
+ "Render Root for one color and Mix for two or more colors.",
20
+ "Choose sharp, rounded, or circle through shape rather than application border-radius CSS.",
21
+ "Place the passive swatch inside its owning control when it represents a selectable option."
20
22
  ],
21
23
  "rules": [
22
24
  {
@@ -29,6 +31,11 @@
29
31
  "level": "must",
30
32
  "statement": "Leave decorative swatches unlabeled, or provide label when the swatch itself must be exposed as an image."
31
33
  },
34
+ {
35
+ "id": "color-swatch-shape",
36
+ "level": "should",
37
+ "statement": "Use the closed shape prop for sharp, rounded, or circle geometry before overriding the public radius variable."
38
+ },
32
39
  {
33
40
  "id": "color-swatch-css",
34
41
  "level": "must",
@@ -38,14 +45,19 @@
38
45
  "commonMistakes": [
39
46
  {
40
47
  "mistake": "Adding click handlers directly to ColorSwatch.",
41
- "correction": "Place the passive swatch inside Button, Color Picker preset behavior, or another semantic control."
48
+ "correction": "Place the passive swatch inside Button, Color Picker SwatchTrigger, or another semantic control."
49
+ },
50
+ {
51
+ "mistake": "Using custom border-radius CSS for a standard square or circle.",
52
+ "correction": "Use shape=sharp, rounded, or circle."
42
53
  }
43
54
  ],
44
55
  "validation": [
45
- "Check solid, alpha, mixed, size, light/dark, forced-color, zoom, RTL, and decorative versus labeled semantics."
56
+ "Check solid, alpha, mixed, size, all three shapes, light/dark, forced colors, zoom, RTL, and decorative versus labeled semantics."
46
57
  ],
47
58
  "related": [
59
+ "color-picker",
48
60
  "badge",
49
- "input"
61
+ "button"
50
62
  ]
51
63
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Preview one color or a compact mix of colors with a finished alpha-aware visual treatment.
5
+ Preview one color or a compact mix of colors with a finished alpha-aware visual treatment and closed shape recipes.
6
6
 
7
7
  ## Use when
8
8
 
@@ -14,23 +14,28 @@ Preview one color or a compact mix of colors with a finished alpha-aware visual
14
14
 
15
15
  ## Required composition
16
16
 
17
- - Render Root for one color and Mix for two or more colors; place the swatch inside the owning control when it represents a selectable option.
17
+ - Render Root for one color and Mix for two or more colors.
18
+ - Choose sharp, rounded, or circle through shape rather than application border-radius CSS.
19
+ - Place the passive swatch inside its owning control when it represents a selectable option.
18
20
 
19
21
  ## Rules
20
22
 
21
23
  - **MUST:** Do not use the swatch as the only carrier of a color name, selection state, validation state, or action.
22
24
  - **MUST:** Leave decorative swatches unlabeled, or provide label when the swatch itself must be exposed as an image.
25
+ - **SHOULD:** Use the closed shape prop for sharp, rounded, or circle geometry before overriding the public radius variable.
23
26
  - **MUST:** Load styles.css or core.css plus color-swatch.css.
24
27
 
25
28
  ## Common mistakes
26
29
 
27
- - **Avoid:** Adding click handlers directly to ColorSwatch. **Instead:** Place the passive swatch inside Button, Color Picker preset behavior, or another semantic control.
30
+ - **Avoid:** Adding click handlers directly to ColorSwatch. **Instead:** Place the passive swatch inside Button, Color Picker SwatchTrigger, or another semantic control.
31
+ - **Avoid:** Using custom border-radius CSS for a standard square or circle. **Instead:** Use shape=sharp, rounded, or circle.
28
32
 
29
33
  ## Validation checklist
30
34
 
31
- - Check solid, alpha, mixed, size, light/dark, forced-color, zoom, RTL, and decorative versus labeled semantics.
35
+ - Check solid, alpha, mixed, size, all three shapes, light/dark, forced colors, zoom, RTL, and decorative versus labeled semantics.
32
36
 
33
37
  ## Related guidance
34
38
 
39
+ - `color-picker`
35
40
  - `badge`
36
- - `input`
41
+ - `button`