@loworbitstudio/visor 1.31.0 → 1.34.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "0.4.0",
3
- "generated_at": "2026-10-03T23:23:41.697Z",
3
+ "generated_at": "2026-10-04T04:36:38.223Z",
4
4
  "components": {
5
5
  "accessibility-specimen": {
6
6
  "changeType": "current",
@@ -560,6 +560,12 @@
560
560
  "breakingChange": false,
561
561
  "migrationNote": null
562
562
  },
563
+ "segmented-control": {
564
+ "changeType": "current",
565
+ "files": [],
566
+ "breakingChange": false,
567
+ "migrationNote": null
568
+ },
563
569
  "segmented-progress": {
564
570
  "changeType": "current",
565
571
  "files": [],
package/dist/index.js CHANGED
@@ -9114,7 +9114,36 @@ var FIXTURES = {
9114
9114
  // the edge tokens leave a default theme unchanged.
9115
9115
  input: {
9116
9116
  default: { export: "Input", interactiveTarget: "input", props: `{ placeholder: "Email address" }` },
9117
- invalid: { export: "Input", interactiveTarget: "input", props: `{ defaultValue: "not-an-email", "aria-invalid": true }` }
9117
+ invalid: { export: "Input", interactiveTarget: "input", props: `{ defaultValue: "not-an-email", "aria-invalid": true }` },
9118
+ // VI-662: fixed text inside the well, beside the value.
9119
+ suffix: { export: "Input", interactiveTarget: "input", props: `{ "aria-label": "Address", defaultValue: "lowtide", suffix: ".epk.pro" }` },
9120
+ prefix: { export: "Input", interactiveTarget: "input", props: `{ "aria-label": "Amount", inputMode: "decimal", defaultValue: "1,250.00", prefix: "\u20AC" }` },
9121
+ // Descenders and accents: a native input must never clip them (text-box trim does).
9122
+ descenders: { export: "Input", interactiveTarget: "input", props: `{ "aria-label": "Amount", defaultValue: "Typography jpq \xC9\xC5\xD1", prefix: "\u20AC", suffix: "jpy" }` },
9123
+ both: { export: "Input", interactiveTarget: "input", props: `{ "aria-label": "Rate", inputMode: "decimal", defaultValue: "85", prefix: "$", suffix: "/ hr" }` }
9124
+ },
9125
+ // VI-671: a rule, a word and a rule.
9126
+ separator: {
9127
+ default: { export: "Separator", props: `{ style: { width: 360 } }` },
9128
+ labelled: { export: "Separator", props: `{ label: "or", style: { width: 360 } }` }
9129
+ },
9130
+ "number-input": {
9131
+ default: { export: "NumberInput", interactiveTarget: "input", props: `{ "aria-label": "Quantity", defaultValue: 4, min: 0, max: 99 }` },
9132
+ prefix: { export: "NumberInput", interactiveTarget: "input", props: `{ "aria-label": "Fee", defaultValue: 150, prefix: "$" }` },
9133
+ descenders: { export: "NumberInput", interactiveTarget: "input", props: `{ "aria-label": "Fee", defaultValue: 1299, prefix: "\u20AC", suffix: "jpy" }` },
9134
+ suffix: { export: "NumberInput", interactiveTarget: "input", props: `{ "aria-label": "Hours", defaultValue: 2, suffix: "h" }` }
9135
+ },
9136
+ // VI-654: the calendar renders open on the month of `value` (November), not the
9137
+ // device's month; `align-end` shows the popover right-aligned to the trigger.
9138
+ "date-picker": {
9139
+ default: { export: "DatePicker", interactiveTarget: "button", props: `{ value: new Date(2026, 10, 14), defaultOpen: true }` },
9140
+ "align-end": { export: "DatePicker", interactiveTarget: "button", props: `{ value: new Date(2026, 10, 14), defaultOpen: true, align: "end", className: "w-full" }` }
9141
+ },
9142
+ // VI-670: invalid keeps the digits; trailing holds a working indicator or Resend.
9143
+ "otp-input": {
9144
+ default: { export: "OTPInput", interactiveTarget: "input", props: `{ value: "428" }` },
9145
+ invalid: { export: "OTPInput", interactiveTarget: "input", props: `{ value: "428519", invalid: true, errorMessage: "That code didn't work. Check it and try again." }` },
9146
+ trailing: { export: "OTPInput", interactiveTarget: "input", props: `{ value: "428519", trailing: React.createElement("button", { type: "button" }, "Resend") }` }
9118
9147
  },
9119
9148
  // VI-624: `default` is the closed field; the popover fixtures render open so the
9120
9149
  // two-column (24-hour) and three-column (12-hour) anatomy can be inspected.
@@ -9265,13 +9294,63 @@ var FIXTURES = {
9265
9294
  unsaved: { export: "SaveStatus", props: `{ status: "unsaved" }` },
9266
9295
  "unsaved-dot": { export: "SaveStatus", props: `{ status: "unsaved", unsavedAs: "dot" }` },
9267
9296
  refused: { export: "SaveStatus", props: `{ status: "refused" }` },
9268
- "refused-retry": { export: "SaveStatus", interactiveTarget: "button", props: `{ status: "refused", onRetry: function () {} }` }
9297
+ "refused-retry": { export: "SaveStatus", interactiveTarget: "button", props: `{ status: "refused", onRetry: function () {} }` },
9298
+ dot: { export: "SaveStatus", props: `{ status: "saved", dot: true }` },
9299
+ "dot-unsaved": { export: "SaveStatus", props: `{ status: "unsaved", dot: true }` }
9300
+ },
9301
+ // VI-615: the single-select pill group. `fullwidth` fills the render frame.
9302
+ "segmented-control": {
9303
+ default: {
9304
+ export: "SegmentedControl",
9305
+ interactiveTarget: "[data-slot=toggle-group-item]",
9306
+ props: `{ "aria-label": "Payment status", defaultValue: "paid", options: [{ value: "unpaid", label: "Unpaid" }, { value: "paid", label: "Paid" }, { value: "any", label: "Any" }] }`
9307
+ },
9308
+ fullwidth: {
9309
+ export: "SegmentedControl",
9310
+ props: `{ "aria-label": "Artist scope", fullWidth: true, defaultValue: "active", options: [{ value: "active", label: "Active" }, { value: "archived", label: "Archived" }, { value: "dnb", label: "Do-not-book" }] }`
9311
+ },
9312
+ "disabled-option": {
9313
+ export: "SegmentedControl",
9314
+ props: `{ "aria-label": "View", defaultValue: "day", options: [{ value: "day", label: "Day" }, { value: "week", label: "Week" }, { value: "month", label: "Month", disabled: true }] }`
9315
+ }
9316
+ },
9317
+ // VI-690: the single-select toggle group in both variants; `--state focus` drives the first item.
9318
+ "toggle-group": {
9319
+ default: {
9320
+ export: "ToggleGroup",
9321
+ interactiveTarget: "[data-slot=toggle-group-item]",
9322
+ props: `(function () {
9323
+ var h = React.createElement;
9324
+ return { type: "single", "aria-label": "Text alignment", defaultValue: "center", children: [
9325
+ h(__mod.ToggleGroupItem, { key: "l", value: "left" }, "Left"),
9326
+ h(__mod.ToggleGroupItem, { key: "c", value: "center" }, "Center"),
9327
+ h(__mod.ToggleGroupItem, { key: "r", value: "right" }, "Right"),
9328
+ ] };
9329
+ })()`
9330
+ },
9331
+ outline: {
9332
+ export: "ToggleGroup",
9333
+ interactiveTarget: "[data-slot=toggle-group-item]",
9334
+ props: `(function () {
9335
+ var h = React.createElement;
9336
+ return { type: "single", variant: "outline", "aria-label": "View", defaultValue: "week", children: [
9337
+ h(__mod.ToggleGroupItem, { key: "d", value: "day" }, "Day"),
9338
+ h(__mod.ToggleGroupItem, { key: "w", value: "week" }, "Week"),
9339
+ h(__mod.ToggleGroupItem, { key: "m", value: "month" }, "Month"),
9340
+ ] };
9341
+ })()`
9342
+ }
9269
9343
  },
9270
9344
  "tag-input": {
9271
9345
  default: {
9272
9346
  export: "TagInput",
9273
9347
  interactiveTarget: "input",
9274
9348
  props: `{ defaultValue: ["design", "tokens"], placeholder: "Add a tag" }`
9349
+ },
9350
+ slot: {
9351
+ export: "TagInput",
9352
+ interactiveTarget: "input",
9353
+ props: `{ defaultValue: ["design", "tokens"], placeholder: "Add a tag", entryAs: "slot" }`
9275
9354
  }
9276
9355
  },
9277
9356
  chip: {