@threadlabs/looma 0.14.3 → 0.14.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threadlabs/looma",
3
- "version": "0.14.3",
3
+ "version": "0.14.4",
4
4
  "type": "module",
5
5
  "description": "Looma components as HTML, Vue, and plain DOM, with design tokens.",
6
6
  "license": "MIT",
@@ -41,6 +41,14 @@
41
41
  :scope[data-ui-text-state~="tone=success"] {
42
42
  color: var(--ui-success);
43
43
  }
44
+ /* The base info and warning colours fall short of 4.5:1 on sunken surfaces, so these use the
45
+ text-safe tokens a subtle badge sets its words in. */
46
+ :scope[data-ui-text-state~="tone=info"] {
47
+ color: var(--ui-info-subtle-text);
48
+ }
49
+ :scope[data-ui-text-state~="tone=warning"] {
50
+ color: var(--ui-warning-subtle-text);
51
+ }
44
52
 
45
53
  :scope[data-ui-text-state~="weight=normal"] {
46
54
  font-weight: var(--ui-font-normal);
@@ -83,6 +91,8 @@
83
91
  @scope ([data-component~="ui-text"]) to ([data-component]) {
84
92
  /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
85
93
  text of its own. The root is a paragraph unless as= names a span, div, small, strong, or label. */
94
+ /* The base info and warning colours fall short of 4.5:1 on sunken surfaces, so these use the
95
+ text-safe tokens a subtle badge sets its words in. */
86
96
 
87
97
  /* A link in running text is underlined, so it stands apart from the words around it by more than
88
98
  colour. */
@@ -9,7 +9,7 @@ export interface UiTextProps {
9
9
  align?: "start" | "center" | null;
10
10
  as?: "p" | "span" | "div" | "small" | "strong" | "label" | null;
11
11
  size?: "inherit" | "xs" | "sm" | "md" | "lg" | null;
12
- tone?: "default" | "secondary" | "muted" | "accent" | "danger" | "success" | null;
12
+ tone?: "default" | "secondary" | "muted" | "accent" | "danger" | "success" | "info" | "warning" | null;
13
13
  truncate?: boolean | null;
14
14
  variant?: "body" | "eyebrow" | "code" | null;
15
15
  weight?: "inherit" | "normal" | "medium" | "semibold" | null;
package/vanilla/UiText.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { componentRootIndex, manageComponentLifecycle } from "@nextwebwg/html-next/runtime";
3
3
  import "../styles/ui-text.css";
4
4
 
5
- const definition = {...{"contract":{"tag":"ui-text","props":{"align":{"type":{"enum":["start","center"]},"required":false,"target":{"attribute":"align"},"default":"start"},"as":{"type":{"enum":["p","span","div","small","strong","label"]},"required":false,"target":{"attribute":"as"},"default":"p"},"size":{"type":{"enum":["inherit","xs","sm","md","lg"]},"required":false,"target":{"attribute":"size"},"default":"inherit"},"tone":{"type":{"enum":["default","secondary","muted","accent","danger","success"]},"required":false,"target":{"attribute":"tone"},"default":"default"},"truncate":{"type":"boolean","required":false,"target":{"attribute":"truncate"},"default":false},"variant":{"type":{"enum":["body","eyebrow","code"]},"required":false,"target":{"attribute":"variant"},"default":"body"},"weight":{"type":{"enum":["inherit","normal","medium","semibold"]},"required":false,"target":{"attribute":"weight"},"default":"inherit"}}},"template":{"kind":"element","name":"template","attributes":[],"children":[{"kind":"element","name":"span","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'span'","testPlan":{"source":"as = 'span'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"span"}},"dependencies":["as"]}}},{"kind":"element","name":"div","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'div'","testPlan":{"source":"as = 'div'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"div"}},"dependencies":["as"]}}},{"kind":"element","name":"small","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'small'","testPlan":{"source":"as = 'small'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"small"}},"dependencies":["as"]}}},{"kind":"element","name":"strong","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'strong'","testPlan":{"source":"as = 'strong'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"strong"}},"dependencies":["as"]}}},{"kind":"element","name":"label","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'label'","testPlan":{"source":"as = 'label'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"label"}},"dependencies":["as"]}}},{"kind":"element","name":"p","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"else"}}],"flow":{"kind":"match"}},"declarations":[],"root":{"kind":"native","element":"p","choices":["span","div","small","strong","label","p"]}},source:{file:import.meta.url},css:""};
5
+ const definition = {...{"contract":{"tag":"ui-text","props":{"align":{"type":{"enum":["start","center"]},"required":false,"target":{"attribute":"align"},"default":"start"},"as":{"type":{"enum":["p","span","div","small","strong","label"]},"required":false,"target":{"attribute":"as"},"default":"p"},"size":{"type":{"enum":["inherit","xs","sm","md","lg"]},"required":false,"target":{"attribute":"size"},"default":"inherit"},"tone":{"type":{"enum":["default","secondary","muted","accent","danger","success","info","warning"]},"required":false,"target":{"attribute":"tone"},"default":"default"},"truncate":{"type":"boolean","required":false,"target":{"attribute":"truncate"},"default":false},"variant":{"type":{"enum":["body","eyebrow","code"]},"required":false,"target":{"attribute":"variant"},"default":"body"},"weight":{"type":{"enum":["inherit","normal","medium","semibold"]},"required":false,"target":{"attribute":"weight"},"default":"inherit"}}},"template":{"kind":"element","name":"template","attributes":[],"children":[{"kind":"element","name":"span","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'span'","testPlan":{"source":"as = 'span'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"span"}},"dependencies":["as"]}}},{"kind":"element","name":"div","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'div'","testPlan":{"source":"as = 'div'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"div"}},"dependencies":["as"]}}},{"kind":"element","name":"small","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'small'","testPlan":{"source":"as = 'small'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"small"}},"dependencies":["as"]}}},{"kind":"element","name":"strong","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'strong'","testPlan":{"source":"as = 'strong'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"strong"}},"dependencies":["as"]}}},{"kind":"element","name":"label","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"when","test":"as = 'label'","testPlan":{"source":"as = 'label'","ast":{"kind":"binary","op":"=","left":{"kind":"id","name":"as"},"right":{"kind":"literal","value":"label"}},"dependencies":["as"]}}},{"kind":"element","name":"p","attributes":[],"children":[{"kind":"slot"}],"flow":{"kind":"else"}}],"flow":{"kind":"match"}},"declarations":[],"root":{"kind":"native","element":"p","choices":["span","div","small","strong","label","p"]}},source:{file:import.meta.url},css:""};
6
6
 
7
7
  export function createUiText(options = {}) {
8
8
  const { attributes = {}, children = [], slots = {}, ...componentProps } = options;
package/vue/UiText.d.ts CHANGED
@@ -2,7 +2,7 @@ type __VLS_Props = {
2
2
  align?: 'start' | 'center';
3
3
  as?: 'p' | 'span' | 'div' | 'small' | 'strong' | 'label';
4
4
  size?: 'inherit' | 'xs' | 'sm' | 'md' | 'lg';
5
- tone?: 'default' | 'secondary' | 'muted' | 'accent' | 'danger' | 'success';
5
+ tone?: 'default' | 'secondary' | 'muted' | 'accent' | 'danger' | 'success' | 'info' | 'warning';
6
6
  truncate?: boolean;
7
7
  variant?: 'body' | 'eyebrow' | 'code';
8
8
  weight?: 'inherit' | 'normal' | 'medium' | 'semibold';
@@ -23,7 +23,7 @@ type __VLS_Slots = {} & {
23
23
  };
24
24
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
25
25
  size: "inherit" | "xs" | "sm" | "md" | "lg";
26
- tone: "default" | "secondary" | "muted" | "accent" | "danger" | "success";
26
+ tone: "default" | "secondary" | "muted" | "accent" | "danger" | "success" | "info" | "warning";
27
27
  variant: "body" | "eyebrow" | "code";
28
28
  align: "start" | "center";
29
29
  as: "p" | "span" | "div" | "small" | "strong" | "label";
package/vue/UiText.vue CHANGED
@@ -9,7 +9,7 @@ const props = withDefaults(
9
9
  align?: 'start' | 'center'
10
10
  as?: 'p' | 'span' | 'div' | 'small' | 'strong' | 'label'
11
11
  size?: 'inherit' | 'xs' | 'sm' | 'md' | 'lg'
12
- tone?: 'default' | 'secondary' | 'muted' | 'accent' | 'danger' | 'success'
12
+ tone?: 'default' | 'secondary' | 'muted' | 'accent' | 'danger' | 'success' | 'info' | 'warning'
13
13
  truncate?: boolean
14
14
  variant?: 'body' | 'eyebrow' | 'code'
15
15
  weight?: 'inherit' | 'normal' | 'medium' | 'semibold'
@@ -118,6 +118,14 @@ const hostState = computed(() =>
118
118
  [data-component~="ui-text"][data-ui-text-state~="tone=success"] {
119
119
  color: var(--ui-success);
120
120
  }
121
+ /* The base info and warning colours fall short of 4.5:1 on sunken surfaces, so these use the
122
+ text-safe tokens a subtle badge sets its words in. */
123
+ [data-component~="ui-text"][data-ui-text-state~="tone=info"] {
124
+ color: var(--ui-info-subtle-text);
125
+ }
126
+ [data-component~="ui-text"][data-ui-text-state~="tone=warning"] {
127
+ color: var(--ui-warning-subtle-text);
128
+ }
121
129
 
122
130
  [data-component~="ui-text"][data-ui-text-state~="weight=normal"] {
123
131
  font-weight: var(--ui-font-normal);
@@ -57,6 +57,6 @@ var UiText_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
57
57
  }, _ctx.$attrs, { "data-ui-text-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_6));
58
58
  };
59
59
  }
60
- }), [["__scopeId", "data-v-ab6bb60b"]]);
60
+ }), [["__scopeId", "data-v-e15a75c1"]]);
61
61
  //#endregion
62
62
  export { UiText_default as t };
@@ -6371,81 +6371,89 @@ tbody tr[data-v-9980d203-s]:last-child > * {
6371
6371
 
6372
6372
  /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
6373
6373
  text of its own. The root is a paragraph unless as= names a span, div, small, strong, or label. */
6374
- [data-component~="ui-text"][data-v-ab6bb60b] {
6374
+ [data-component~="ui-text"][data-v-e15a75c1] {
6375
6375
  margin: 0;
6376
6376
  min-inline-size: 0;
6377
6377
  color: var(--ui-text-primary);
6378
6378
  text-align: start;
6379
6379
  }
6380
- [data-component~="ui-text"][data-ui-text-state~="size=xs"][data-v-ab6bb60b] {
6380
+ [data-component~="ui-text"][data-ui-text-state~="size=xs"][data-v-e15a75c1] {
6381
6381
  font-size: var(--ui-font-size-xs);
6382
6382
  line-height: var(--ui-line-height);
6383
6383
  }
6384
- [data-component~="ui-text"][data-ui-text-state~="size=sm"][data-v-ab6bb60b] {
6384
+ [data-component~="ui-text"][data-ui-text-state~="size=sm"][data-v-e15a75c1] {
6385
6385
  font-size: var(--ui-font-size-sm);
6386
6386
  line-height: var(--ui-line-height);
6387
6387
  }
6388
- [data-component~="ui-text"][data-ui-text-state~="size=md"][data-v-ab6bb60b] {
6388
+ [data-component~="ui-text"][data-ui-text-state~="size=md"][data-v-e15a75c1] {
6389
6389
  font-size: var(--ui-font-size-md);
6390
6390
  line-height: var(--ui-line-height);
6391
6391
  }
6392
- [data-component~="ui-text"][data-ui-text-state~="size=lg"][data-v-ab6bb60b] {
6392
+ [data-component~="ui-text"][data-ui-text-state~="size=lg"][data-v-e15a75c1] {
6393
6393
  font-size: var(--ui-font-size-lg);
6394
6394
  line-height: var(--ui-line-height-relaxed);
6395
6395
  }
6396
- [data-component~="ui-text"][data-ui-text-state~="tone=secondary"][data-v-ab6bb60b] {
6396
+ [data-component~="ui-text"][data-ui-text-state~="tone=secondary"][data-v-e15a75c1] {
6397
6397
  color: var(--ui-text-secondary);
6398
6398
  }
6399
- [data-component~="ui-text"][data-ui-text-state~="tone=muted"][data-v-ab6bb60b] {
6399
+ [data-component~="ui-text"][data-ui-text-state~="tone=muted"][data-v-e15a75c1] {
6400
6400
  color: var(--ui-text-muted);
6401
6401
  }
6402
- [data-component~="ui-text"][data-ui-text-state~="tone=accent"][data-v-ab6bb60b] {
6402
+ [data-component~="ui-text"][data-ui-text-state~="tone=accent"][data-v-e15a75c1] {
6403
6403
  color: var(--ui-accent-active);
6404
6404
  }
6405
- [data-component~="ui-text"][data-ui-text-state~="tone=danger"][data-v-ab6bb60b] {
6405
+ [data-component~="ui-text"][data-ui-text-state~="tone=danger"][data-v-e15a75c1] {
6406
6406
  color: var(--ui-danger);
6407
6407
  }
6408
- [data-component~="ui-text"][data-ui-text-state~="tone=success"][data-v-ab6bb60b] {
6408
+ [data-component~="ui-text"][data-ui-text-state~="tone=success"][data-v-e15a75c1] {
6409
6409
  color: var(--ui-success);
6410
6410
  }
6411
- [data-component~="ui-text"][data-ui-text-state~="weight=normal"][data-v-ab6bb60b] {
6411
+ /* The base info and warning colours fall short of 4.5:1 on sunken surfaces, so these use the
6412
+ text-safe tokens a subtle badge sets its words in. */
6413
+ [data-component~="ui-text"][data-ui-text-state~="tone=info"][data-v-e15a75c1] {
6414
+ color: var(--ui-info-subtle-text);
6415
+ }
6416
+ [data-component~="ui-text"][data-ui-text-state~="tone=warning"][data-v-e15a75c1] {
6417
+ color: var(--ui-warning-subtle-text);
6418
+ }
6419
+ [data-component~="ui-text"][data-ui-text-state~="weight=normal"][data-v-e15a75c1] {
6412
6420
  font-weight: var(--ui-font-normal);
6413
6421
  }
6414
- [data-component~="ui-text"][data-ui-text-state~="weight=medium"][data-v-ab6bb60b] {
6422
+ [data-component~="ui-text"][data-ui-text-state~="weight=medium"][data-v-e15a75c1] {
6415
6423
  font-weight: var(--ui-font-medium);
6416
6424
  }
6417
- [data-component~="ui-text"][data-ui-text-state~="weight=semibold"][data-v-ab6bb60b] {
6425
+ [data-component~="ui-text"][data-ui-text-state~="weight=semibold"][data-v-e15a75c1] {
6418
6426
  font-weight: var(--ui-font-semibold);
6419
6427
  }
6420
- [data-component~="ui-text"][data-ui-text-state~="variant=eyebrow"][data-v-ab6bb60b] {
6428
+ [data-component~="ui-text"][data-ui-text-state~="variant=eyebrow"][data-v-e15a75c1] {
6421
6429
  font-size: var(--ui-font-size-xs);
6422
6430
  font-weight: var(--ui-font-semibold);
6423
6431
  letter-spacing: 0.06em;
6424
6432
  text-transform: uppercase;
6425
6433
  }
6426
- [data-component~="ui-text"][data-ui-text-state~="variant=code"][data-v-ab6bb60b] {
6434
+ [data-component~="ui-text"][data-ui-text-state~="variant=code"][data-v-e15a75c1] {
6427
6435
  font-family: var(--ui-font-family-mono);
6428
6436
  }
6429
6437
 
6430
6438
  /* A link in running text is underlined, so it stands apart from the words around it by more than
6431
6439
  colour. */
6432
- [data-component~="ui-text"] a[data-v-ab6bb60b-s] {
6440
+ [data-component~="ui-text"] a[data-v-e15a75c1-s] {
6433
6441
  color: var(--ui-accent-active);
6434
6442
  text-decoration: underline;
6435
6443
  text-decoration-thickness: 0.06em;
6436
6444
  text-underline-offset: 0.18em;
6437
6445
  }
6438
- [data-component~="ui-text"][data-ui-text-state~="truncate"][data-v-ab6bb60b] {
6446
+ [data-component~="ui-text"][data-ui-text-state~="truncate"][data-v-e15a75c1] {
6439
6447
  overflow: hidden;
6440
6448
  text-overflow: ellipsis;
6441
6449
  white-space: nowrap;
6442
6450
  }
6443
- [data-component~="ui-text"][data-ui-text-state~="align=center"][data-v-ab6bb60b] {
6451
+ [data-component~="ui-text"][data-ui-text-state~="align=center"][data-v-e15a75c1] {
6444
6452
  text-align: center;
6445
6453
  }
6446
6454
 
6447
6455
  /* A component that sets its display still honours the hidden attribute on its root. */
6448
- [data-component~="ui-text"][hidden][data-v-ab6bb60b] {
6456
+ [data-component~="ui-text"][hidden][data-v-e15a75c1] {
6449
6457
  display: none;
6450
6458
  }
6451
6459