@tempoxyz/ds 0.3.11 → 0.3.13

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 (212) hide show
  1. package/README.md +7 -6
  2. package/dist/docs/AGENTS.md +8 -5
  3. package/dist/docs/index.md +143 -135
  4. package/dist/docs/marketing/introduction/getting-started.md +241 -0
  5. package/dist/docs/{components → product/components}/accordion.md +8 -8
  6. package/dist/docs/{components → product/components}/address-card.md +5 -5
  7. package/dist/docs/{components → product/components}/agent-logo.md +5 -5
  8. package/dist/docs/{components → product/components}/alert-dialog.md +11 -11
  9. package/dist/docs/{components → product/components}/alert.md +11 -11
  10. package/dist/docs/{components → product/components}/amount-input.md +13 -13
  11. package/dist/docs/{components → product/components}/amount.md +8 -8
  12. package/dist/docs/{components → product/components}/app-shell.md +13 -13
  13. package/dist/docs/{components → product/components}/asset-chip.md +11 -11
  14. package/dist/docs/{components → product/components}/autocomplete.md +10 -9
  15. package/dist/docs/{components → product/components}/avatar.md +8 -8
  16. package/dist/docs/{components → product/components}/badge.md +9 -9
  17. package/dist/docs/{components → product/components}/badged-logo.md +6 -6
  18. package/dist/docs/{components → product/components}/banner.md +8 -8
  19. package/dist/docs/{components → product/components}/bar-chart.md +7 -7
  20. package/dist/docs/{components → product/components}/breadcrumbs.md +8 -8
  21. package/dist/docs/{components → product/components}/button-group.md +8 -8
  22. package/dist/docs/{components → product/components}/button.md +17 -17
  23. package/dist/docs/{components → product/components}/calendar.md +8 -8
  24. package/dist/docs/{components → product/components}/callout.md +5 -5
  25. package/dist/docs/{components → product/components}/checkbox-group.md +13 -13
  26. package/dist/docs/{components → product/components}/checkbox.md +12 -12
  27. package/dist/docs/{components → product/components}/choice-group.md +14 -14
  28. package/dist/docs/{components → product/components}/choicebox.md +9 -9
  29. package/dist/docs/{components → product/components}/code.md +5 -5
  30. package/dist/docs/{components → product/components}/combobox.md +9 -9
  31. package/dist/docs/{components → product/components}/container.md +7 -7
  32. package/dist/docs/{components → product/components}/copy-button.md +13 -13
  33. package/dist/docs/{components → product/components}/date-picker.md +11 -11
  34. package/dist/docs/{components → product/components}/dialog.md +17 -17
  35. package/dist/docs/{components → product/components}/drawer.md +11 -11
  36. package/dist/docs/{components → product/components}/empty.md +9 -9
  37. package/dist/docs/{components → product/components}/field.md +14 -14
  38. package/dist/docs/{components → product/components}/fieldset.md +6 -6
  39. package/dist/docs/{components → product/components}/frame.md +9 -9
  40. package/dist/docs/{components → product/components}/gauge.md +7 -7
  41. package/dist/docs/{components → product/components}/get-started-visual.md +4 -4
  42. package/dist/docs/{components → product/components}/grid.md +7 -7
  43. package/dist/docs/{components → product/components}/hero-visual.md +4 -4
  44. package/dist/docs/{components → product/components}/hex.md +9 -9
  45. package/dist/docs/{components → product/components}/icon-tile.md +8 -8
  46. package/dist/docs/{components → product/components}/identicon.md +7 -7
  47. package/dist/docs/{components → product/components}/inline.md +7 -7
  48. package/dist/docs/{components → product/components}/inset.md +8 -8
  49. package/dist/docs/{components → product/components}/kbd.md +8 -8
  50. package/dist/docs/{components → product/components}/list-group.md +24 -24
  51. package/dist/docs/{components → product/components}/loading-dots.md +8 -8
  52. package/dist/docs/{components → product/components}/menu.md +14 -14
  53. package/dist/docs/{components → product/components}/native-select.md +7 -7
  54. package/dist/docs/{components → product/components}/network-logo.md +7 -7
  55. package/dist/docs/{components → product/components}/number-field.md +8 -8
  56. package/dist/docs/{components → product/components}/otp-field.md +9 -9
  57. package/dist/docs/{components → product/components}/pagination.md +8 -8
  58. package/dist/docs/{components → product/components}/popover.md +11 -11
  59. package/dist/docs/{components → product/components}/progress.md +10 -10
  60. package/dist/docs/{components → product/components}/qr.md +8 -8
  61. package/dist/docs/{components → product/components}/radio-group.md +10 -10
  62. package/dist/docs/{components → product/components}/secret-value.md +8 -8
  63. package/dist/docs/{components → product/components}/select.md +13 -13
  64. package/dist/docs/{components → product/components}/separator.md +7 -7
  65. package/dist/docs/{components → product/components}/sidebar-menu.md +11 -11
  66. package/dist/docs/{components → product/components}/skeleton.md +9 -9
  67. package/dist/docs/{components → product/components}/slider.md +8 -8
  68. package/dist/docs/{components → product/components}/snippet.md +10 -10
  69. package/dist/docs/{components → product/components}/spinner.md +12 -12
  70. package/dist/docs/{components → product/components}/split-bar.md +5 -5
  71. package/dist/docs/{components → product/components}/split-button.md +11 -11
  72. package/dist/docs/{components → product/components}/stack.md +8 -8
  73. package/dist/docs/{components → product/components}/status-chip.md +7 -7
  74. package/dist/docs/{components → product/components}/status-indicator.md +6 -6
  75. package/dist/docs/{components → product/components}/status-row.md +7 -7
  76. package/dist/docs/{components → product/components}/stepper.md +9 -9
  77. package/dist/docs/{components → product/components}/success-hero.md +5 -5
  78. package/dist/docs/{components → product/components}/surface.md +11 -11
  79. package/dist/docs/{components → product/components}/switch.md +11 -11
  80. package/dist/docs/{components → product/components}/table.md +16 -16
  81. package/dist/docs/{components → product/components}/tabs.md +11 -11
  82. package/dist/docs/{components → product/components}/tempo-logo.md +4 -4
  83. package/dist/docs/{components → product/components}/text-input.md +14 -14
  84. package/dist/docs/{components → product/components}/textarea.md +7 -7
  85. package/dist/docs/{components → product/components}/toast.md +11 -11
  86. package/dist/docs/{components → product/components}/token-logo.md +16 -16
  87. package/dist/docs/{components → product/components}/token.md +10 -10
  88. package/dist/docs/{components → product/components}/tooltip.md +11 -11
  89. package/dist/docs/{components → product/components}/verification-code.md +4 -4
  90. package/dist/docs/{components → product/components}/visual.md +5 -5
  91. package/dist/docs/product/components.md +203 -0
  92. package/dist/docs/{foundations → product/foundations}/accessibility.md +16 -16
  93. package/dist/docs/{foundations → product/foundations}/agents.md +17 -17
  94. package/dist/docs/{foundations → product/foundations}/color.md +7 -7
  95. package/dist/docs/{foundations → product/foundations}/content/tone.md +7 -7
  96. package/dist/docs/{foundations → product/foundations}/content/voice.md +2 -2
  97. package/dist/docs/{foundations → product/foundations}/content/writing-style.md +8 -8
  98. package/dist/docs/{foundations → product/foundations}/iconography.md +11 -11
  99. package/dist/docs/{foundations → product/foundations}/intent.md +28 -28
  100. package/dist/docs/{foundations → product/foundations}/layout.md +22 -22
  101. package/dist/docs/product/foundations/linter.md +496 -0
  102. package/dist/docs/{foundations → product/foundations}/motion.md +7 -7
  103. package/dist/docs/{foundations → product/foundations}/radius-and-padding.md +3 -3
  104. package/dist/docs/{foundations → product/foundations}/typography.md +4 -4
  105. package/dist/docs/{introduction → product/introduction}/faq.md +22 -21
  106. package/dist/docs/{introduction → product/introduction}/getting-started.md +4 -4
  107. package/dist/docs/{patterns → product/patterns}/blockchain-values.md +20 -20
  108. package/dist/docs/{patterns → product/patterns}/dashboards.md +28 -28
  109. package/dist/docs/{patterns → product/patterns}/destructive-actions.md +16 -16
  110. package/dist/docs/{patterns → product/patterns}/empty-states.md +14 -14
  111. package/dist/docs/{patterns → product/patterns}/errors-and-validation.md +23 -23
  112. package/dist/docs/{patterns → product/patterns}/feedback-and-status.md +31 -31
  113. package/dist/docs/{patterns → product/patterns}/forms.md +24 -24
  114. package/dist/docs/{patterns → product/patterns}/loading.md +19 -19
  115. package/dist/docs/{patterns → product/patterns}/navigation.md +23 -23
  116. package/dist/docs/{patterns → product/patterns}/payments.md +20 -20
  117. package/dist/docs/{patterns → product/patterns}/responsive-layout.md +23 -23
  118. package/dist/docs/{patterns → product/patterns}/tables-and-lists.md +19 -19
  119. package/dist/docs/{products → product/products}/tempo-console.md +12 -12
  120. package/dist/docs/{products → product/products}/tempo-performance.md +11 -11
  121. package/dist/docs/{products → product/products}/tempo-wallet.md +12 -12
  122. package/dist/marketing/index.d.ts +4 -0
  123. package/dist/marketing/index.d.ts.map +1 -0
  124. package/dist/marketing/index.js +4 -0
  125. package/dist/marketing/index.js.map +1 -0
  126. package/dist/marketing/index.js.zyzz.json +1 -0
  127. package/dist/marketing/vars.d.ts +907 -0
  128. package/dist/marketing/vars.d.ts.map +1 -0
  129. package/dist/marketing/vars.js +15 -0
  130. package/dist/marketing/vars.js.map +1 -0
  131. package/dist/marketing/vars.js.zyzz.json +1 -0
  132. package/dist/marketing/zyzz.config.d.ts +4512 -0
  133. package/dist/marketing/zyzz.config.d.ts.map +1 -0
  134. package/dist/marketing/zyzz.config.js +63 -0
  135. package/dist/marketing/zyzz.config.js.map +1 -0
  136. package/dist/marketing/zyzz.config.js.zyzz.json +1 -0
  137. package/dist/oxlint/index.d.ts +12 -1
  138. package/dist/oxlint/index.d.ts.map +1 -1
  139. package/dist/oxlint/index.js +39 -1
  140. package/dist/oxlint/index.js.map +1 -1
  141. package/dist/oxlint/internal/Docs.d.ts +9 -0
  142. package/dist/oxlint/internal/Docs.d.ts.map +1 -0
  143. package/dist/oxlint/internal/Docs.js +15 -0
  144. package/dist/oxlint/internal/Docs.js.map +1 -0
  145. package/dist/oxlint/internal/Imports.d.ts +1 -1
  146. package/dist/oxlint/internal/Imports.d.ts.map +1 -1
  147. package/dist/oxlint/internal/Imports.js +2 -0
  148. package/dist/oxlint/internal/Imports.js.map +1 -1
  149. package/dist/oxlint/internal/Styles.d.ts +40 -0
  150. package/dist/oxlint/internal/Styles.d.ts.map +1 -0
  151. package/dist/oxlint/internal/Styles.js +194 -0
  152. package/dist/oxlint/internal/Styles.js.map +1 -0
  153. package/dist/oxlint/internal/Tokens.d.ts +16 -0
  154. package/dist/oxlint/internal/Tokens.d.ts.map +1 -0
  155. package/dist/oxlint/internal/Tokens.js +39 -0
  156. package/dist/oxlint/internal/Tokens.js.map +1 -0
  157. package/dist/oxlint/rules/NoCrossSurface.d.ts +2 -2
  158. package/dist/oxlint/rules/NoCrossSurface.js +3 -3
  159. package/dist/oxlint/rules/NoCrossSurface.js.map +1 -1
  160. package/dist/oxlint/rules/NoCustomValues.d.ts +11 -0
  161. package/dist/oxlint/rules/NoCustomValues.d.ts.map +1 -0
  162. package/dist/oxlint/rules/NoCustomValues.js +150 -0
  163. package/dist/oxlint/rules/NoCustomValues.js.map +1 -0
  164. package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts +11 -0
  165. package/dist/oxlint/rules/NoSingleKeyShortcuts.d.ts.map +1 -0
  166. package/dist/oxlint/rules/NoSingleKeyShortcuts.js +158 -0
  167. package/dist/oxlint/rules/NoSingleKeyShortcuts.js.map +1 -0
  168. package/dist/oxlint/rules/PreferComponent.d.ts +3 -2
  169. package/dist/oxlint/rules/PreferComponent.d.ts.map +1 -1
  170. package/dist/oxlint/rules/PreferComponent.js +11 -4
  171. package/dist/oxlint/rules/PreferComponent.js.map +1 -1
  172. package/dist/oxlint/rules/PreferLayout.d.ts +9 -0
  173. package/dist/oxlint/rules/PreferLayout.d.ts.map +1 -0
  174. package/dist/oxlint/rules/PreferLayout.js +90 -0
  175. package/dist/oxlint/rules/PreferLayout.js.map +1 -0
  176. package/dist/oxlint/rules/PreferProgress.d.ts +9 -0
  177. package/dist/oxlint/rules/PreferProgress.d.ts.map +1 -0
  178. package/dist/oxlint/rules/PreferProgress.js +43 -0
  179. package/dist/oxlint/rules/PreferProgress.js.map +1 -0
  180. package/dist/oxlint/rules/PreferSurface.d.ts +9 -0
  181. package/dist/oxlint/rules/PreferSurface.d.ts.map +1 -0
  182. package/dist/oxlint/rules/PreferSurface.js +55 -0
  183. package/dist/oxlint/rules/PreferSurface.js.map +1 -0
  184. package/dist/oxlint/rules/RequireAccessibleName.d.ts.map +1 -1
  185. package/dist/oxlint/rules/RequireAccessibleName.js +3 -1
  186. package/dist/oxlint/rules/RequireAccessibleName.js.map +1 -1
  187. package/dist/oxlint/rules/RequireScrollRegion.d.ts +11 -0
  188. package/dist/oxlint/rules/RequireScrollRegion.d.ts.map +1 -0
  189. package/dist/oxlint/rules/RequireScrollRegion.js +71 -0
  190. package/dist/oxlint/rules/RequireScrollRegion.js.map +1 -0
  191. package/dist/web/icons/index.js.zyzz.json +1 -0
  192. package/package.json +6 -1
  193. package/src/marketing/README.md +21 -0
  194. package/src/marketing/index.ts +3 -0
  195. package/src/marketing/vars.ts +751 -0
  196. package/src/marketing/zyzz.config.ts +376 -0
  197. package/src/oxlint/index.ts +40 -1
  198. package/src/oxlint/internal/Docs.ts +18 -0
  199. package/src/oxlint/internal/Imports.ts +2 -1
  200. package/src/oxlint/internal/Styles.ts +240 -0
  201. package/src/oxlint/internal/Tokens.ts +43 -0
  202. package/src/oxlint/rules/NoCrossSurface.ts +3 -3
  203. package/src/oxlint/rules/NoCustomValues.ts +170 -0
  204. package/src/oxlint/rules/NoSingleKeyShortcuts.ts +190 -0
  205. package/src/oxlint/rules/PreferComponent.ts +11 -4
  206. package/src/oxlint/rules/PreferLayout.ts +96 -0
  207. package/src/oxlint/rules/PreferProgress.ts +49 -0
  208. package/src/oxlint/rules/PreferSurface.ts +70 -0
  209. package/src/oxlint/rules/RequireAccessibleName.ts +3 -1
  210. package/src/oxlint/rules/RequireScrollRegion.ts +92 -0
  211. package/dist/docs/components.md +0 -203
  212. package/dist/docs/foundations/linter.md +0 -296
@@ -0,0 +1,55 @@
1
+ import * as Docs from '../internal/Docs.js';
2
+ import * as Styles from '../internal/Styles.js';
3
+ // Elements that render a card's container. Inline elements and controls draw other components.
4
+ const tags = new Set(['article', 'aside', 'div', 'li', 'section']);
5
+ // Values that draw nothing, so the declaration does not make the element a card.
6
+ const empty = /^(?:0(?:\.0+)?(?:px|rem)?|initial|none|transparent|unset)$/;
7
+ /**
8
+ * Reports an `article`, `aside`, `div`, `li`, or `section` whose styles draw a card: a corner
9
+ * radius and padding with a border or a background. A pill radius, such as `full`, and a
10
+ * positioned element, such as a hand-built popover, pass.
11
+ */
12
+ export const rule = {
13
+ meta: {
14
+ docs: { description: 'Use `Surface` instead of a native element styled as a card.' },
15
+ messages: {
16
+ surface: "Use 'Surface' from '@tempoxyz/ds' instead of styling <{{element}}> as a card. It sets the radius and padding together. See {{url}}",
17
+ },
18
+ schema: [],
19
+ type: 'suggestion',
20
+ },
21
+ create(context) {
22
+ return Styles.visit((element) => {
23
+ if (!tags.has(element.tag))
24
+ return;
25
+ const declarations = element.declarations;
26
+ function set(property) {
27
+ const node = declarations.get(property);
28
+ if (!node)
29
+ return false;
30
+ const value = Styles.text(node);
31
+ return value === undefined || !empty.test(value);
32
+ }
33
+ const properties = [...declarations.keys()];
34
+ const position = Styles.text(declarations.get('position'));
35
+ const radius = properties.some((property) => {
36
+ if (!property.endsWith('Radius') || !set(property))
37
+ return false;
38
+ const value = Styles.text(declarations.get(property));
39
+ return value === undefined || !/^(?:50%|9{3,}(?:px)?|full)$/.test(value);
40
+ });
41
+ const padding = properties.some((property) => property.startsWith('padding') && set(property));
42
+ const border = properties.some((property) => /^border(?:Block|Bottom|Inline|Left|Right|Top)?(?:End|Start)?(?:Style|Width)?$/.test(property) && set(property));
43
+ const background = set('background') || set('backgroundColor');
44
+ if (position === 'absolute' || position === 'fixed' || position === 'sticky')
45
+ return;
46
+ if (radius && padding && (border || background))
47
+ context.report({
48
+ data: { element: element.tag, url: Docs.component('Surface') },
49
+ messageId: 'surface',
50
+ node: element.node,
51
+ });
52
+ });
53
+ },
54
+ };
55
+ //# sourceMappingURL=PreferSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreferSurface.js","sourceRoot":"","sources":["../../../src/oxlint/rules/PreferSurface.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RequireAccessibleName.d.ts","sourceRoot":"","sources":["../../../src/oxlint/rules/RequireAccessibleName.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAwBnD;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,IAqGlB,CAAA"}
1
+ {"version":3,"file":"RequireAccessibleName.d.ts","sourceRoot":"","sources":["../../../src/oxlint/rules/RequireAccessibleName.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAA;AA0BnD;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,IAqGlB,CAAA"}
@@ -2,8 +2,10 @@ import * as Imports from '../internal/Imports.js';
2
2
  const list = new Intl.ListFormat('en', { type: 'disjunction' });
3
3
  const web = ['aria-label', 'aria-labelledby'];
4
4
  const mobile = ['accessibilityLabel', 'accessibilityLabelledBy', 'aria-label', 'aria-labelledby'];
5
- // Components from each surface whose rendered output has no text to name it.
5
+ // Components from each surface whose rendered output has no text to name it. Marketing ships no
6
+ // components yet.
6
7
  const targets = {
8
+ marketing: {},
7
9
  mobile: { IconButton: { names: mobile } },
8
10
  web: {
9
11
  Button: { names: web, when: { attribute: 'shape', value: 'icon' } },
@@ -1 +1 @@
1
- {"version":3,"file":"RequireAccessibleName.js","sourceRoot":"","sources":["../../../src/oxlint/rules/RequireAccessibleName.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequireAccessibleName.js","sourceRoot":"","sources":["../../../src/oxlint/rules/RequireAccessibleName.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** Requires a name, a role, and a tab stop on native scroll containers. @module */
2
+ import type { Rule } from '@oxlint/plugins';
3
+ /**
4
+ * Reports a native element that scrolls, through `overflow` set to `auto` or `scroll`, without
5
+ * `role`, `tabIndex`, and `aria-label` or `aria-labelledby`. Keyboards scroll only a focusable
6
+ * region, and screen readers announce the region by its name. An element with a spread that the
7
+ * rule cannot read passes, since the spread can supply the attributes, and so does a container whose
8
+ * content holds a link, a button, a field, or an element with `tabIndex`.
9
+ */
10
+ export declare const rule: Rule;
11
+ //# sourceMappingURL=RequireScrollRegion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequireScrollRegion.d.ts","sourceRoot":"","sources":["../../../src/oxlint/rules/RequireScrollRegion.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,KAAK,EAAU,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAYnD;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,EAAE,IAuElB,CAAA"}
@@ -0,0 +1,71 @@
1
+ import * as Docs from '../internal/Docs.js';
2
+ import * as Styles from '../internal/Styles.js';
3
+ const list = new Intl.ListFormat('en', { type: 'conjunction' });
4
+ // Native elements and component names that take focus, so the region's content holds a tab stop.
5
+ const focusable = /^(?:a|button|input|select|summary|textarea|.*(?:Button|Input|Link|Select|Trigger))$/;
6
+ const overflows = ['overflow', 'overflowBlock', 'overflowInline', 'overflowX', 'overflowY'];
7
+ /**
8
+ * Reports a native element that scrolls, through `overflow` set to `auto` or `scroll`, without
9
+ * `role`, `tabIndex`, and `aria-label` or `aria-labelledby`. Keyboards scroll only a focusable
10
+ * region, and screen readers announce the region by its name. An element with a spread that the
11
+ * rule cannot read passes, since the spread can supply the attributes, and so does a container whose
12
+ * content holds a link, a button, a field, or an element with `tabIndex`.
13
+ */
14
+ export const rule = {
15
+ meta: {
16
+ docs: { description: 'Name scroll containers and make them focusable.' },
17
+ messages: {
18
+ region: 'This scrolling <{{element}}> needs {{missing}}, so keyboard and screen reader users can reach and identify it. See {{url}}',
19
+ },
20
+ schema: [],
21
+ type: 'problem',
22
+ },
23
+ create(context) {
24
+ function attribute(node, names) {
25
+ return node.attributes.some((attribute) => attribute.type === 'JSXAttribute' &&
26
+ attribute.name.type === 'JSXIdentifier' &&
27
+ names.includes(attribute.name.name));
28
+ }
29
+ // Whether the JSX inside `node` renders an element that takes focus.
30
+ function interactive(node) {
31
+ if (node.type === 'JSXOpeningElement') {
32
+ const name = context.sourceCode.getText(node.name).split('.').at(-1) ?? '';
33
+ if (focusable.test(name) || attribute(node, ['href', 'tabIndex']))
34
+ return true;
35
+ }
36
+ return (context.sourceCode.visitorKeys[node.type] ?? []).some((field) => {
37
+ const value = Reflect.get(node, field);
38
+ return (Array.isArray(value) ? value : [value]).some((child) => child && typeof child === 'object' && 'type' in child && interactive(child));
39
+ });
40
+ }
41
+ return Styles.visit((element) => {
42
+ if (element.spread)
43
+ return;
44
+ const scrolls = overflows.some((property) => {
45
+ const value = Styles.text(element.declarations.get(property));
46
+ return value !== undefined && /\b(?:auto|scroll)\b/.test(value);
47
+ });
48
+ if (!scrolls)
49
+ return;
50
+ if (element.node.parent.type === 'JSXElement' &&
51
+ element.node.parent.children.some(interactive))
52
+ return;
53
+ const missing = [
54
+ ...(attribute(element.node, ['role']) ? [] : ['role="region"']),
55
+ ...(attribute(element.node, ['tabIndex']) ? [] : ['tabIndex={0}']),
56
+ ...(attribute(element.node, ['aria-label', 'aria-labelledby']) ? [] : ['an aria-label']),
57
+ ];
58
+ if (missing.length > 0)
59
+ context.report({
60
+ data: {
61
+ element: element.tag,
62
+ missing: list.format(missing),
63
+ url: Docs.page('patterns/responsive-layout#scroll-wide-content-inside-its-own-region'),
64
+ },
65
+ messageId: 'region',
66
+ node: element.node,
67
+ });
68
+ });
69
+ },
70
+ };
71
+ //# sourceMappingURL=RequireScrollRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequireScrollRegion.js","sourceRoot":"","sources":["../../../src/oxlint/rules/RequireScrollRegion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAA;AAE/D,iGAAiG;AACjG,MAAM,SAAS,GACb,qFAAqF,CAAA;AAEvF,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;AAE3F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,IAAI,GAAS;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE,WAAW,EAAE,iDAAiD,EAAE;QACxE,QAAQ,EAAE;YACR,MAAM,EACJ,4HAA4H;SAC/H;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAChB;IACD,MAAM,CAAC,OAAO;QACZ,SAAS,SAAS,CAAC,IAA8B,EAAE,KAAwB;YACzE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,IAAI,KAAK,cAAc;gBACjC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;gBACvC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC,CAAA;QACH,CAAC;QAED,qEAAqE;QACrE,SAAS,WAAW,CAAC,IAAiB;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBAE1E,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAA;YAChF,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtE,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBAE/C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAClD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,CACvF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAM;YAE1B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAA;gBAE7D,OAAO,KAAK,KAAK,SAAS,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACjE,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,OAAO;gBAAE,OAAM;YACpB,IACE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY;gBACzC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;gBAE9C,OAAM;YAER,MAAM,OAAO,GAAG;gBACd,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC/D,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBAClE,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;aACzF,CAAA;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBACpB,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE;wBACJ,OAAO,EAAE,OAAO,CAAC,GAAG;wBACpB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;wBAC7B,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,sEAAsE,CAAC;qBACvF;oBACD,SAAS,EAAE,QAAQ;oBACnB,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -0,0 +1 @@
1
+ {"classRules":{},"exports":{},"stylesheets":[],"themes":{},"version":31}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tempoxyz/ds",
3
3
  "type": "module",
4
- "version": "0.3.11",
4
+ "version": "0.3.13",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "DESIGN.md",
@@ -1428,6 +1428,11 @@
1428
1428
  "src": "./src/web/icons/svg/ZoomOut.svg",
1429
1429
  "default": "./dist/web/icons/svg/ZoomOut.svg"
1430
1430
  },
1431
+ "./marketing": {
1432
+ "src": "./src/marketing/index.ts",
1433
+ "types": "./dist/marketing/index.d.ts",
1434
+ "default": "./dist/marketing/index.js"
1435
+ },
1431
1436
  "./mobile": {
1432
1437
  "src": "./src/mobile/index.ts",
1433
1438
  "types": "./dist/mobile/index.d.ts",
@@ -0,0 +1,21 @@
1
+ # Marketing
2
+
3
+ Use `@tempoxyz/ds/marketing` with a Zyzz plugin for Tempo's marketing websites, such as the home page, campaign landing pages, and launch pages. Marketing is Web only.
4
+
5
+ ```tsx
6
+ import { style } from '@tempoxyz/ds/marketing'
7
+
8
+ namespace styles {
9
+ export const hero = style({
10
+ color: 'content.primary',
11
+ paddingBlock: '64',
12
+ typography: 'heading.h1',
13
+ })
14
+ }
15
+
16
+ ;<section {...styles.hero()} />
17
+ ```
18
+
19
+ The Marketing variables start as a copy of the Web variables and change as the Marketing designs define their own values. Marketing ships no components yet. An app uses one surface: a marketing site imports `@tempoxyz/ds/marketing`, and a product interface imports `@tempoxyz/ds`.
20
+
21
+ The Marketing surface shares the Zyzz plugin setup of the [Web surface](../web/README.md#setup).
@@ -0,0 +1,3 @@
1
+ /** Marketing surface: the variables and authoring helpers for Tempo's marketing websites. @module */
2
+ export { style, variants, vars } from './zyzz.config.js'
3
+ export { variables } from './vars.js'