@raylang/elements 0.7.0 → 0.9.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 (58) hide show
  1. package/base.css +1 -1
  2. package/components/accordion/accordion.js +7 -4
  3. package/components/alert/alert.js +2 -1
  4. package/components/attachment/attachment.js +4 -5
  5. package/components/blockquote/blockquote.js +2 -2
  6. package/components/bottom-nav/bottom-nav.js +3 -3
  7. package/components/carousel/carousel.js +22 -10
  8. package/components/checkbox/checkbox.js +5 -2
  9. package/components/checkbox-group/checkbox-group.js +1 -1
  10. package/components/code/code.js +16 -11
  11. package/components/color-picker/color-picker.js +5 -5
  12. package/components/combobox/combobox.js +2 -1
  13. package/components/command-palette/command-palette.js +17 -2
  14. package/components/date-picker/date-picker.js +5 -3
  15. package/components/dialog/dialog.js +1 -1
  16. package/components/doc-tabs/doc-tabs.js +255 -0
  17. package/components/drawer/drawer.js +27 -9
  18. package/components/icon/icon.js +4 -1
  19. package/components/icon-button/icon-button.js +4 -0
  20. package/components/indicator/indicator.js +2 -1
  21. package/components/input/input.js +13 -1
  22. package/components/menu/menu.js +43 -8
  23. package/components/mode-input/mode-input.js +221 -0
  24. package/components/nav-link/nav-link.js +5 -2
  25. package/components/notification/notification.js +15 -12
  26. package/components/progress/progress.js +2 -2
  27. package/components/radio/radio.js +4 -2
  28. package/components/scroll-area/scroll-area.js +14 -11
  29. package/components/search/search.js +3 -3
  30. package/components/segmented-control/segmented-control.js +5 -3
  31. package/components/select/select.js +3 -3
  32. package/components/separator/separator.js +8 -3
  33. package/components/sidebar/sidebar.js +154 -11
  34. package/components/slider/slider.js +5 -2
  35. package/components/split/split.js +25 -7
  36. package/components/stepper/stepper.js +4 -4
  37. package/components/switch/switch.js +3 -3
  38. package/components/table/table.js +5 -5
  39. package/components/tabs/tabs.js +55 -14
  40. package/components/textarea/textarea.js +13 -1
  41. package/components/timeline/timeline.js +13 -8
  42. package/components/toggle-group/toggle-group.js +6 -4
  43. package/core/complete.js +252 -0
  44. package/core/core.js +6 -1
  45. package/core/direction.js +19 -0
  46. package/core/icons.js +12 -0
  47. package/core/position.js +11 -3
  48. package/core/scroll.js +85 -1
  49. package/core/styles.js +1 -1
  50. package/core/textlayer.js +214 -0
  51. package/core.js +1 -0
  52. package/custom-elements.json +1487 -143
  53. package/index.js +2 -0
  54. package/llms-full.txt +224 -28
  55. package/llms.txt +26 -4
  56. package/package.json +9 -1
  57. package/ray-elements.d.ts +190 -31
  58. package/vscode.html-custom-data.json +477 -22
@@ -1504,11 +1504,11 @@
1504
1504
  {
1505
1505
  "name": "label-position",
1506
1506
  "type": {
1507
- "text": "\"right\" | \"left\""
1507
+ "text": "\"end\" | \"start\" | \"right\" | \"left\""
1508
1508
  },
1509
- "description": "Side of the label.",
1509
+ "description": "Side of the label: start/end follow the writing direction; left/right are sides of the screen.",
1510
1510
  "fieldName": "labelPosition",
1511
- "default": "right"
1511
+ "default": "end"
1512
1512
  },
1513
1513
  {
1514
1514
  "name": "radius",
@@ -1654,12 +1654,12 @@
1654
1654
  "kind": "field",
1655
1655
  "name": "labelPosition",
1656
1656
  "type": {
1657
- "text": "\"right\" | \"left\""
1657
+ "text": "\"end\" | \"start\" | \"right\" | \"left\""
1658
1658
  },
1659
- "description": "Side of the label.",
1659
+ "description": "Side of the label: start/end follow the writing direction; left/right are sides of the screen.",
1660
1660
  "attribute": "label-position",
1661
1661
  "reflects": true,
1662
- "default": "right"
1662
+ "default": "end"
1663
1663
  },
1664
1664
  {
1665
1665
  "kind": "field",
@@ -4482,85 +4482,611 @@
4482
4482
  "fieldName": "variant",
4483
4483
  "default": "default"
4484
4484
  },
4485
+ {
4486
+ "name": "suggestions-label",
4487
+ "type": {
4488
+ "text": "string"
4489
+ },
4490
+ "description": "Accessible name of the suggestion list.",
4491
+ "fieldName": "suggestionsLabel",
4492
+ "default": "Suggestions"
4493
+ },
4485
4494
  {
4486
4495
  "name": "autocomplete",
4487
4496
  "type": {
4488
4497
  "text": "string"
4489
4498
  },
4490
- "description": "Forwarded to the inner input."
4499
+ "description": "Forwarded to the inner input."
4500
+ },
4501
+ {
4502
+ "name": "inputmode",
4503
+ "type": {
4504
+ "text": "string"
4505
+ },
4506
+ "description": "Virtual keyboard hint."
4507
+ },
4508
+ {
4509
+ "name": "pattern",
4510
+ "type": {
4511
+ "text": "string"
4512
+ },
4513
+ "description": "Validation pattern (regular expression)."
4514
+ },
4515
+ {
4516
+ "name": "min",
4517
+ "type": {
4518
+ "text": "string"
4519
+ },
4520
+ "description": "Minimum (number/date types)."
4521
+ },
4522
+ {
4523
+ "name": "max",
4524
+ "type": {
4525
+ "text": "string"
4526
+ },
4527
+ "description": "Maximum (number/date types)."
4528
+ },
4529
+ {
4530
+ "name": "step",
4531
+ "type": {
4532
+ "text": "string"
4533
+ },
4534
+ "description": "Step (number types)."
4535
+ },
4536
+ {
4537
+ "name": "minlength",
4538
+ "type": {
4539
+ "text": "string"
4540
+ },
4541
+ "description": "Minimum length."
4542
+ },
4543
+ {
4544
+ "name": "maxlength",
4545
+ "type": {
4546
+ "text": "string"
4547
+ },
4548
+ "description": "Maximum length."
4549
+ },
4550
+ {
4551
+ "name": "autocapitalize",
4552
+ "type": {
4553
+ "text": "string"
4554
+ },
4555
+ "description": "Mobile auto-capitalization."
4556
+ },
4557
+ {
4558
+ "name": "enterkeyhint",
4559
+ "type": {
4560
+ "text": "string"
4561
+ },
4562
+ "description": "Label of the Enter key on virtual keyboards."
4563
+ },
4564
+ {
4565
+ "name": "list",
4566
+ "type": {
4567
+ "text": "string"
4568
+ },
4569
+ "description": "Id of a <datalist> with suggestions."
4570
+ }
4571
+ ],
4572
+ "members": [
4573
+ {
4574
+ "kind": "field",
4575
+ "name": "value",
4576
+ "type": {
4577
+ "text": "string"
4578
+ },
4579
+ "description": "Current value. The value attribute is the initial value (restored on form reset).",
4580
+ "attribute": "value",
4581
+ "reflects": false
4582
+ },
4583
+ {
4584
+ "kind": "field",
4585
+ "name": "type",
4586
+ "type": {
4587
+ "text": "\"text\" | \"email\" | \"password\" | \"search\" | \"number\" | \"url\" | \"tel\""
4588
+ },
4589
+ "description": "Input type.",
4590
+ "attribute": "type",
4591
+ "reflects": true,
4592
+ "default": "text"
4593
+ },
4594
+ {
4595
+ "kind": "field",
4596
+ "name": "name",
4597
+ "type": {
4598
+ "text": "string"
4599
+ },
4600
+ "description": "Form field name.",
4601
+ "attribute": "name",
4602
+ "reflects": true
4603
+ },
4604
+ {
4605
+ "kind": "field",
4606
+ "name": "label",
4607
+ "type": {
4608
+ "text": "string"
4609
+ },
4610
+ "description": "Visible label (also the accessible name).",
4611
+ "attribute": "label",
4612
+ "reflects": false
4613
+ },
4614
+ {
4615
+ "kind": "field",
4616
+ "name": "description",
4617
+ "type": {
4618
+ "text": "string"
4619
+ },
4620
+ "description": "Help text under the label.",
4621
+ "attribute": "description",
4622
+ "reflects": false
4623
+ },
4624
+ {
4625
+ "kind": "field",
4626
+ "name": "descriptionPosition",
4627
+ "type": {
4628
+ "text": "\"above\" | \"below\""
4629
+ },
4630
+ "description": "The description before the control (help first) or after it, with the error (fields in a row stay aligned).",
4631
+ "attribute": "description-position",
4632
+ "reflects": true,
4633
+ "default": "above"
4634
+ },
4635
+ {
4636
+ "kind": "field",
4637
+ "name": "error",
4638
+ "type": {
4639
+ "text": "string"
4640
+ },
4641
+ "description": "Error text; marks the field invalid (display only — does not block submit).",
4642
+ "attribute": "error",
4643
+ "reflects": false
4644
+ },
4645
+ {
4646
+ "kind": "field",
4647
+ "name": "placeholder",
4648
+ "type": {
4649
+ "text": "string"
4650
+ },
4651
+ "description": "Placeholder text.",
4652
+ "attribute": "placeholder",
4653
+ "reflects": false
4654
+ },
4655
+ {
4656
+ "kind": "field",
4657
+ "name": "required",
4658
+ "type": {
4659
+ "text": "boolean"
4660
+ },
4661
+ "description": "Required for form submission; shows an asterisk.",
4662
+ "attribute": "required",
4663
+ "reflects": false
4664
+ },
4665
+ {
4666
+ "kind": "field",
4667
+ "name": "disabled",
4668
+ "type": {
4669
+ "text": "boolean"
4670
+ },
4671
+ "description": "Not editable nor submitted.",
4672
+ "attribute": "disabled",
4673
+ "reflects": false
4674
+ },
4675
+ {
4676
+ "kind": "field",
4677
+ "name": "readonly",
4678
+ "type": {
4679
+ "text": "boolean"
4680
+ },
4681
+ "description": "Not editable, still submitted.",
4682
+ "attribute": "readonly",
4683
+ "reflects": false
4684
+ },
4685
+ {
4686
+ "kind": "field",
4687
+ "name": "size",
4688
+ "type": {
4689
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\""
4690
+ },
4691
+ "description": "Height and font size.",
4692
+ "attribute": "size",
4693
+ "reflects": true,
4694
+ "default": "sm"
4695
+ },
4696
+ {
4697
+ "kind": "field",
4698
+ "name": "radius",
4699
+ "type": {
4700
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\""
4701
+ },
4702
+ "description": "Corner radius.",
4703
+ "attribute": "radius",
4704
+ "reflects": false
4705
+ },
4706
+ {
4707
+ "kind": "field",
4708
+ "name": "variant",
4709
+ "type": {
4710
+ "text": "\"default\" | \"filled\" | \"unstyled\""
4711
+ },
4712
+ "description": "Box style.",
4713
+ "attribute": "variant",
4714
+ "reflects": true,
4715
+ "default": "default"
4716
+ },
4717
+ {
4718
+ "kind": "field",
4719
+ "name": "highlight",
4720
+ "type": {
4721
+ "text": "((text: string) => HighlightRange[]) | null"
4722
+ },
4723
+ "description": "Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind \"error\" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap."
4724
+ },
4725
+ {
4726
+ "kind": "field",
4727
+ "name": "complete",
4728
+ "type": {
4729
+ "text": "((text: string, caret: number) => CompletionResult | null | Promise<CompletionResult | null>) | null"
4730
+ },
4731
+ "description": "Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant)."
4732
+ },
4733
+ {
4734
+ "kind": "field",
4735
+ "name": "suggestionsLabel",
4736
+ "type": {
4737
+ "text": "string"
4738
+ },
4739
+ "description": "Accessible name of the suggestion list.",
4740
+ "attribute": "suggestions-label",
4741
+ "reflects": false,
4742
+ "default": "Suggestions"
4743
+ },
4744
+ {
4745
+ "kind": "method",
4746
+ "name": "select",
4747
+ "description": "Selects the text."
4748
+ },
4749
+ {
4750
+ "kind": "method",
4751
+ "name": "refreshHighlight",
4752
+ "description": "Runs highlight again, when what it marks changed but the text did not."
4753
+ }
4754
+ ],
4755
+ "events": [
4756
+ {
4757
+ "name": "ray-complete",
4758
+ "type": {
4759
+ "text": "CustomEvent<{ item: CompletionItem; from: number; to: number }>"
4760
+ },
4761
+ "description": "A suggestion was accepted (the text already has it)."
4762
+ },
4763
+ {
4764
+ "name": "input",
4765
+ "type": {
4766
+ "text": "Event"
4767
+ },
4768
+ "description": "On every edit (value already updated)."
4769
+ },
4770
+ {
4771
+ "name": "change",
4772
+ "type": {
4773
+ "text": "Event"
4774
+ },
4775
+ "description": "When an edit is committed (blur, Enter)."
4776
+ }
4777
+ ],
4778
+ "slots": [
4779
+ {
4780
+ "name": "left",
4781
+ "description": "Section before the text (icon)."
4782
+ },
4783
+ {
4784
+ "name": "right",
4785
+ "description": "Section after the text (icon, button)."
4786
+ }
4787
+ ],
4788
+ "cssParts": [
4789
+ {
4790
+ "name": "input",
4791
+ "description": "The inner <input>."
4792
+ },
4793
+ {
4794
+ "name": "wrapper",
4795
+ "description": "The box around the input and sections."
4796
+ },
4797
+ {
4798
+ "name": "label",
4799
+ "description": "The label."
4800
+ },
4801
+ {
4802
+ "name": "description",
4803
+ "description": "The description."
4804
+ },
4805
+ {
4806
+ "name": "error",
4807
+ "description": "The error message."
4808
+ },
4809
+ {
4810
+ "name": "suggestions",
4811
+ "description": "The suggestion list (a listbox in the top layer)."
4812
+ },
4813
+ {
4814
+ "name": "suggestion",
4815
+ "description": "Each suggestion ([aria-selected] when active)."
4816
+ },
4817
+ {
4818
+ "name": "highlight",
4819
+ "description": "Each marked range (also highlight-<kind> for a range with a kind)."
4820
+ },
4821
+ {
4822
+ "name": "text-layer",
4823
+ "description": "The layer behind the text that holds the marks."
4824
+ }
4825
+ ]
4826
+ }
4827
+ ],
4828
+ "exports": [
4829
+ {
4830
+ "kind": "js",
4831
+ "name": "RayInput",
4832
+ "declaration": {
4833
+ "name": "RayInput",
4834
+ "module": "components/input/input.js"
4835
+ }
4836
+ },
4837
+ {
4838
+ "kind": "custom-element-definition",
4839
+ "name": "ray-input",
4840
+ "declaration": {
4841
+ "name": "RayInput",
4842
+ "module": "components/input/input.js"
4843
+ }
4844
+ }
4845
+ ]
4846
+ },
4847
+ {
4848
+ "kind": "javascript-module",
4849
+ "path": "components/mode-input/mode-input.js",
4850
+ "declarations": [
4851
+ {
4852
+ "kind": "class",
4853
+ "name": "RayModeInput",
4854
+ "tagName": "ray-mode-input",
4855
+ "customElement": true,
4856
+ "description": "Declare the modes as <option> children (label, data-icon, data-hint, data-description, disabled, and data-set-<attribute> for each attribute the mode sets on the field) or with the options property. A mode's attributes replace the field's own while it is chosen and give them back after. The menu is a ray-menu of radio items in the field's shadow root; Alt+ArrowDown opens it from the field, and the trigger keeps the caret in the field.",
4857
+ "superclass": {
4858
+ "name": "RayInput"
4859
+ },
4860
+ "attributes": [
4861
+ {
4862
+ "name": "mode",
4863
+ "type": {
4864
+ "text": "string"
4865
+ },
4866
+ "description": "The chosen mode's value (default: the first). Setting it applies that mode without ray-mode-change.",
4867
+ "fieldName": "mode"
4868
+ },
4869
+ {
4870
+ "name": "display",
4871
+ "type": {
4872
+ "text": "\"label\" | \"icon\" | \"both\""
4873
+ },
4874
+ "description": "What the trigger shows: the mode's hint or label, its icon, or both. Default: the icon when the mode has one, else the label.",
4875
+ "fieldName": "display"
4876
+ },
4877
+ {
4878
+ "name": "position",
4879
+ "type": {
4880
+ "text": "\"start\" | \"end\""
4881
+ },
4882
+ "description": "The side of the field the trigger sits on.",
4883
+ "fieldName": "position",
4884
+ "default": "start"
4885
+ },
4886
+ {
4887
+ "name": "menu-label",
4888
+ "type": {
4889
+ "text": "string"
4890
+ },
4891
+ "description": "The trigger's accessible name, read with the current mode (\"Mode: File\").",
4892
+ "fieldName": "menuLabel",
4893
+ "default": "Mode"
4894
+ },
4895
+ {
4896
+ "name": "native-menu",
4897
+ "type": {
4898
+ "text": "boolean"
4899
+ },
4900
+ "description": "With a native host (a std/ui window with the bridge), the system's menu (no descriptions there).",
4901
+ "fieldName": "nativeMenu"
4902
+ },
4903
+ {
4904
+ "name": "value",
4905
+ "type": {
4906
+ "text": "string"
4907
+ },
4908
+ "description": "Current value. The value attribute is the initial value (restored on form reset).",
4909
+ "fieldName": "value"
4910
+ },
4911
+ {
4912
+ "name": "type",
4913
+ "type": {
4914
+ "text": "\"text\" | \"email\" | \"password\" | \"search\" | \"number\" | \"url\" | \"tel\""
4915
+ },
4916
+ "description": "Input type.",
4917
+ "fieldName": "type",
4918
+ "default": "text"
4919
+ },
4920
+ {
4921
+ "name": "name",
4922
+ "type": {
4923
+ "text": "string"
4924
+ },
4925
+ "description": "Form field name.",
4926
+ "fieldName": "name"
4927
+ },
4928
+ {
4929
+ "name": "label",
4930
+ "type": {
4931
+ "text": "string"
4932
+ },
4933
+ "description": "Visible label (also the accessible name).",
4934
+ "fieldName": "label"
4935
+ },
4936
+ {
4937
+ "name": "description",
4938
+ "type": {
4939
+ "text": "string"
4940
+ },
4941
+ "description": "Help text under the label.",
4942
+ "fieldName": "description"
4491
4943
  },
4492
4944
  {
4493
- "name": "inputmode",
4945
+ "name": "description-position",
4494
4946
  "type": {
4495
- "text": "string"
4947
+ "text": "\"above\" | \"below\""
4496
4948
  },
4497
- "description": "Virtual keyboard hint."
4949
+ "description": "The description before the control (help first) or after it, with the error (fields in a row stay aligned).",
4950
+ "fieldName": "descriptionPosition",
4951
+ "default": "above"
4498
4952
  },
4499
4953
  {
4500
- "name": "pattern",
4954
+ "name": "error",
4501
4955
  "type": {
4502
4956
  "text": "string"
4503
4957
  },
4504
- "description": "Validation pattern (regular expression)."
4958
+ "description": "Error text; marks the field invalid (display only — does not block submit).",
4959
+ "fieldName": "error"
4505
4960
  },
4506
4961
  {
4507
- "name": "min",
4962
+ "name": "placeholder",
4508
4963
  "type": {
4509
4964
  "text": "string"
4510
4965
  },
4511
- "description": "Minimum (number/date types)."
4966
+ "description": "Placeholder text.",
4967
+ "fieldName": "placeholder"
4512
4968
  },
4513
4969
  {
4514
- "name": "max",
4970
+ "name": "required",
4515
4971
  "type": {
4516
- "text": "string"
4972
+ "text": "boolean"
4517
4973
  },
4518
- "description": "Maximum (number/date types)."
4974
+ "description": "Required for form submission; shows an asterisk.",
4975
+ "fieldName": "required"
4519
4976
  },
4520
4977
  {
4521
- "name": "step",
4978
+ "name": "disabled",
4522
4979
  "type": {
4523
- "text": "string"
4980
+ "text": "boolean"
4524
4981
  },
4525
- "description": "Step (number types)."
4982
+ "description": "Not editable nor submitted.",
4983
+ "fieldName": "disabled"
4526
4984
  },
4527
4985
  {
4528
- "name": "minlength",
4986
+ "name": "readonly",
4529
4987
  "type": {
4530
- "text": "string"
4988
+ "text": "boolean"
4531
4989
  },
4532
- "description": "Minimum length."
4990
+ "description": "Not editable, still submitted.",
4991
+ "fieldName": "readonly"
4533
4992
  },
4534
4993
  {
4535
- "name": "maxlength",
4994
+ "name": "size",
4536
4995
  "type": {
4537
- "text": "string"
4996
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\""
4538
4997
  },
4539
- "description": "Maximum length."
4998
+ "description": "Height and font size.",
4999
+ "fieldName": "size",
5000
+ "default": "sm"
4540
5001
  },
4541
5002
  {
4542
- "name": "autocapitalize",
5003
+ "name": "radius",
4543
5004
  "type": {
4544
- "text": "string"
5005
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\""
4545
5006
  },
4546
- "description": "Mobile auto-capitalization."
5007
+ "description": "Corner radius.",
5008
+ "fieldName": "radius"
4547
5009
  },
4548
5010
  {
4549
- "name": "enterkeyhint",
5011
+ "name": "variant",
4550
5012
  "type": {
4551
- "text": "string"
5013
+ "text": "\"default\" | \"filled\" | \"unstyled\""
4552
5014
  },
4553
- "description": "Label of the Enter key on virtual keyboards."
5015
+ "description": "Box style.",
5016
+ "fieldName": "variant",
5017
+ "default": "default"
4554
5018
  },
4555
5019
  {
4556
- "name": "list",
5020
+ "name": "suggestions-label",
4557
5021
  "type": {
4558
5022
  "text": "string"
4559
5023
  },
4560
- "description": "Id of a <datalist> with suggestions."
5024
+ "description": "Accessible name of the suggestion list.",
5025
+ "fieldName": "suggestionsLabel",
5026
+ "default": "Suggestions"
4561
5027
  }
4562
5028
  ],
4563
5029
  "members": [
5030
+ {
5031
+ "kind": "field",
5032
+ "name": "mode",
5033
+ "type": {
5034
+ "text": "string"
5035
+ },
5036
+ "description": "The chosen mode's value (default: the first). Setting it applies that mode without ray-mode-change.",
5037
+ "attribute": "mode",
5038
+ "reflects": true
5039
+ },
5040
+ {
5041
+ "kind": "field",
5042
+ "name": "options",
5043
+ "type": {
5044
+ "text": "ModeOption[]"
5045
+ },
5046
+ "description": "The modes; when not set, the <option> children."
5047
+ },
5048
+ {
5049
+ "kind": "field",
5050
+ "name": "display",
5051
+ "type": {
5052
+ "text": "\"label\" | \"icon\" | \"both\""
5053
+ },
5054
+ "description": "What the trigger shows: the mode's hint or label, its icon, or both. Default: the icon when the mode has one, else the label.",
5055
+ "attribute": "display",
5056
+ "reflects": true
5057
+ },
5058
+ {
5059
+ "kind": "field",
5060
+ "name": "position",
5061
+ "type": {
5062
+ "text": "\"start\" | \"end\""
5063
+ },
5064
+ "description": "The side of the field the trigger sits on.",
5065
+ "attribute": "position",
5066
+ "reflects": true,
5067
+ "default": "start"
5068
+ },
5069
+ {
5070
+ "kind": "field",
5071
+ "name": "menuLabel",
5072
+ "type": {
5073
+ "text": "string"
5074
+ },
5075
+ "description": "The trigger's accessible name, read with the current mode (\"Mode: File\").",
5076
+ "attribute": "menu-label",
5077
+ "reflects": false,
5078
+ "default": "Mode"
5079
+ },
5080
+ {
5081
+ "kind": "field",
5082
+ "name": "nativeMenu",
5083
+ "type": {
5084
+ "text": "boolean"
5085
+ },
5086
+ "description": "With a native host (a std/ui window with the bridge), the system's menu (no descriptions there).",
5087
+ "attribute": "native-menu",
5088
+ "reflects": true
5089
+ },
4564
5090
  {
4565
5091
  "kind": "field",
4566
5092
  "name": "value",
@@ -4705,13 +5231,64 @@
4705
5231
  "reflects": true,
4706
5232
  "default": "default"
4707
5233
  },
5234
+ {
5235
+ "kind": "field",
5236
+ "name": "highlight",
5237
+ "type": {
5238
+ "text": "((text: string) => HighlightRange[]) | null"
5239
+ },
5240
+ "description": "Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind \"error\" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap."
5241
+ },
5242
+ {
5243
+ "kind": "field",
5244
+ "name": "complete",
5245
+ "type": {
5246
+ "text": "((text: string, caret: number) => CompletionResult | null | Promise<CompletionResult | null>) | null"
5247
+ },
5248
+ "description": "Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant)."
5249
+ },
5250
+ {
5251
+ "kind": "field",
5252
+ "name": "suggestionsLabel",
5253
+ "type": {
5254
+ "text": "string"
5255
+ },
5256
+ "description": "Accessible name of the suggestion list.",
5257
+ "attribute": "suggestions-label",
5258
+ "reflects": false,
5259
+ "default": "Suggestions"
5260
+ },
5261
+ {
5262
+ "kind": "field",
5263
+ "name": "modes",
5264
+ "description": "The modes in use."
5265
+ },
5266
+ {
5267
+ "kind": "field",
5268
+ "name": "currentOption",
5269
+ "description": "The chosen mode."
5270
+ },
4708
5271
  {
4709
5272
  "kind": "method",
4710
- "name": "select",
4711
- "description": "Selects the text."
5273
+ "name": "choose",
5274
+ "description": "Chooses a mode as the user would (fires ray-mode-change)."
4712
5275
  }
4713
5276
  ],
4714
5277
  "events": [
5278
+ {
5279
+ "name": "ray-mode-change",
5280
+ "type": {
5281
+ "text": "CustomEvent<{ mode: string; previous: string | null; option: ModeOption }>"
5282
+ },
5283
+ "description": "The user chose a mode (mode is already the new one); cancelable: preventDefault keeps the previous mode."
5284
+ },
5285
+ {
5286
+ "name": "ray-complete",
5287
+ "type": {
5288
+ "text": "CustomEvent<{ item: CompletionItem; from: number; to: number }>"
5289
+ },
5290
+ "description": "A suggestion was accepted (the text already has it)."
5291
+ },
4715
5292
  {
4716
5293
  "name": "input",
4717
5294
  "type": {
@@ -4727,36 +5304,23 @@
4727
5304
  "description": "When an edit is committed (blur, Enter)."
4728
5305
  }
4729
5306
  ],
4730
- "slots": [
4731
- {
4732
- "name": "left",
4733
- "description": "Section before the text (icon)."
4734
- },
4735
- {
4736
- "name": "right",
4737
- "description": "Section after the text (icon, button)."
4738
- }
4739
- ],
5307
+ "slots": [],
4740
5308
  "cssParts": [
4741
5309
  {
4742
- "name": "input",
4743
- "description": "The inner <input>."
4744
- },
4745
- {
4746
- "name": "wrapper",
4747
- "description": "The box around the input and sections."
5310
+ "name": "trigger",
5311
+ "description": "The button that opens the menu."
4748
5312
  },
4749
5313
  {
4750
- "name": "label",
4751
- "description": "The label."
5314
+ "name": "trigger-icon",
5315
+ "description": "The current mode's icon in the trigger."
4752
5316
  },
4753
5317
  {
4754
- "name": "description",
4755
- "description": "The description."
5318
+ "name": "trigger-label",
5319
+ "description": "The current mode's hint or label in the trigger."
4756
5320
  },
4757
5321
  {
4758
- "name": "error",
4759
- "description": "The error message."
5322
+ "name": "menu",
5323
+ "description": "The ray-menu of modes."
4760
5324
  }
4761
5325
  ]
4762
5326
  }
@@ -4764,18 +5328,18 @@
4764
5328
  "exports": [
4765
5329
  {
4766
5330
  "kind": "js",
4767
- "name": "RayInput",
5331
+ "name": "RayModeInput",
4768
5332
  "declaration": {
4769
- "name": "RayInput",
4770
- "module": "components/input/input.js"
5333
+ "name": "RayModeInput",
5334
+ "module": "components/mode-input/mode-input.js"
4771
5335
  }
4772
5336
  },
4773
5337
  {
4774
5338
  "kind": "custom-element-definition",
4775
- "name": "ray-input",
5339
+ "name": "ray-mode-input",
4776
5340
  "declaration": {
4777
- "name": "RayInput",
4778
- "module": "components/input/input.js"
5341
+ "name": "RayModeInput",
5342
+ "module": "components/mode-input/mode-input.js"
4779
5343
  }
4780
5344
  }
4781
5345
  ]
@@ -5494,6 +6058,15 @@
5494
6058
  "description": "Box style.",
5495
6059
  "fieldName": "variant",
5496
6060
  "default": "default"
6061
+ },
6062
+ {
6063
+ "name": "suggestions-label",
6064
+ "type": {
6065
+ "text": "string"
6066
+ },
6067
+ "description": "Accessible name of the suggestion list.",
6068
+ "fieldName": "suggestionsLabel",
6069
+ "default": "Suggestions"
5497
6070
  }
5498
6071
  ],
5499
6072
  "members": [
@@ -5672,6 +6245,33 @@
5672
6245
  "attribute": "variant",
5673
6246
  "reflects": true,
5674
6247
  "default": "default"
6248
+ },
6249
+ {
6250
+ "kind": "field",
6251
+ "name": "highlight",
6252
+ "type": {
6253
+ "text": "((text: string) => HighlightRange[]) | null"
6254
+ },
6255
+ "description": "Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind \"error\" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap."
6256
+ },
6257
+ {
6258
+ "kind": "field",
6259
+ "name": "complete",
6260
+ "type": {
6261
+ "text": "((text: string, caret: number) => CompletionResult | null | Promise<CompletionResult | null>) | null"
6262
+ },
6263
+ "description": "Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant)."
6264
+ },
6265
+ {
6266
+ "kind": "field",
6267
+ "name": "suggestionsLabel",
6268
+ "type": {
6269
+ "text": "string"
6270
+ },
6271
+ "description": "Accessible name of the suggestion list.",
6272
+ "attribute": "suggestions-label",
6273
+ "reflects": false,
6274
+ "default": "Suggestions"
5675
6275
  }
5676
6276
  ],
5677
6277
  "events": [
@@ -5682,6 +6282,13 @@
5682
6282
  },
5683
6283
  "description": "The user showed or hid the password."
5684
6284
  },
6285
+ {
6286
+ "name": "ray-complete",
6287
+ "type": {
6288
+ "text": "CustomEvent<{ item: CompletionItem; from: number; to: number }>"
6289
+ },
6290
+ "description": "A suggestion was accepted (the text already has it)."
6291
+ },
5685
6292
  {
5686
6293
  "name": "input",
5687
6294
  "type": {
@@ -5888,6 +6495,15 @@
5888
6495
  "description": "Box style.",
5889
6496
  "fieldName": "variant",
5890
6497
  "default": "default"
6498
+ },
6499
+ {
6500
+ "name": "suggestions-label",
6501
+ "type": {
6502
+ "text": "string"
6503
+ },
6504
+ "description": "Accessible name of the suggestion list.",
6505
+ "fieldName": "suggestionsLabel",
6506
+ "default": "Suggestions"
5891
6507
  }
5892
6508
  ],
5893
6509
  "members": [
@@ -6077,6 +6693,33 @@
6077
6693
  "reflects": true,
6078
6694
  "default": "default"
6079
6695
  },
6696
+ {
6697
+ "kind": "field",
6698
+ "name": "highlight",
6699
+ "type": {
6700
+ "text": "((text: string) => HighlightRange[]) | null"
6701
+ },
6702
+ "description": "Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind \"error\" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap."
6703
+ },
6704
+ {
6705
+ "kind": "field",
6706
+ "name": "complete",
6707
+ "type": {
6708
+ "text": "((text: string, caret: number) => CompletionResult | null | Promise<CompletionResult | null>) | null"
6709
+ },
6710
+ "description": "Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant)."
6711
+ },
6712
+ {
6713
+ "kind": "field",
6714
+ "name": "suggestionsLabel",
6715
+ "type": {
6716
+ "text": "string"
6717
+ },
6718
+ "description": "Accessible name of the suggestion list.",
6719
+ "attribute": "suggestions-label",
6720
+ "reflects": false,
6721
+ "default": "Suggestions"
6722
+ },
6080
6723
  {
6081
6724
  "kind": "field",
6082
6725
  "name": "canBrowse",
@@ -6103,6 +6746,13 @@
6103
6746
  },
6104
6747
  "description": "The system dialog failed."
6105
6748
  },
6749
+ {
6750
+ "name": "ray-complete",
6751
+ "type": {
6752
+ "text": "CustomEvent<{ item: CompletionItem; from: number; to: number }>"
6753
+ },
6754
+ "description": "A suggestion was accepted (the text already has it)."
6755
+ },
6106
6756
  {
6107
6757
  "name": "input",
6108
6758
  "type": {
@@ -8238,11 +8888,11 @@
8238
8888
  {
8239
8889
  "name": "label-position",
8240
8890
  "type": {
8241
- "text": "\"right\" | \"left\""
8891
+ "text": "\"end\" | \"start\" | \"right\" | \"left\""
8242
8892
  },
8243
- "description": "Side of the label.",
8893
+ "description": "Side of the label: start/end follow the writing direction; left/right are sides of the screen.",
8244
8894
  "fieldName": "labelPosition",
8245
- "default": "right"
8895
+ "default": "end"
8246
8896
  },
8247
8897
  {
8248
8898
  "name": "color",
@@ -8376,12 +9026,12 @@
8376
9026
  "kind": "field",
8377
9027
  "name": "labelPosition",
8378
9028
  "type": {
8379
- "text": "\"right\" | \"left\""
9029
+ "text": "\"end\" | \"start\" | \"right\" | \"left\""
8380
9030
  },
8381
- "description": "Side of the label.",
9031
+ "description": "Side of the label: start/end follow the writing direction; left/right are sides of the screen.",
8382
9032
  "attribute": "label-position",
8383
9033
  "reflects": true,
8384
- "default": "right"
9034
+ "default": "end"
8385
9035
  },
8386
9036
  {
8387
9037
  "kind": "field",
@@ -8643,6 +9293,15 @@
8643
9293
  "fieldName": "variant",
8644
9294
  "default": "default"
8645
9295
  },
9296
+ {
9297
+ "name": "suggestions-label",
9298
+ "type": {
9299
+ "text": "string"
9300
+ },
9301
+ "description": "Accessible name of the suggestion list.",
9302
+ "fieldName": "suggestionsLabel",
9303
+ "default": "Suggestions"
9304
+ },
8646
9305
  {
8647
9306
  "name": "radius",
8648
9307
  "type": {
@@ -8825,12 +9484,39 @@
8825
9484
  "kind": "field",
8826
9485
  "name": "variant",
8827
9486
  "type": {
8828
- "text": "\"default\" | \"filled\" | \"unstyled\""
9487
+ "text": "\"default\" | \"filled\" | \"unstyled\""
9488
+ },
9489
+ "description": "Box style.",
9490
+ "attribute": "variant",
9491
+ "reflects": true,
9492
+ "default": "default"
9493
+ },
9494
+ {
9495
+ "kind": "field",
9496
+ "name": "highlight",
9497
+ "type": {
9498
+ "text": "((text: string) => HighlightRange[]) | null"
9499
+ },
9500
+ "description": "Marks ranges of the text, painted behind it: called with the text on every change (typed or set), it returns { start, end, kind?, title? } offsets. kind \"error\" is red with a wavy underline; any other kind is styled with ::part(highlight-<kind>); title is the tooltip over the range. Ranges must not overlap."
9501
+ },
9502
+ {
9503
+ "kind": "field",
9504
+ "name": "complete",
9505
+ "type": {
9506
+ "text": "((text: string, caret: number) => CompletionResult | null | Promise<CompletionResult | null>) | null"
9507
+ },
9508
+ "description": "Inline suggestions: called as the user types (and on Ctrl+Space) with the text and the caret, it returns the part of the text a suggestion would replace and the suggestions ({ from, to, items }), or null for none. A list opens under that part (ArrowUp/Down, Enter or Tab to accept, Escape to close); the chosen item's value replaces from–to as an undoable edit, then ray-complete fires. The field becomes a combobox (aria-autocomplete, aria-expanded, aria-activedescendant)."
9509
+ },
9510
+ {
9511
+ "kind": "field",
9512
+ "name": "suggestionsLabel",
9513
+ "type": {
9514
+ "text": "string"
8829
9515
  },
8830
- "description": "Box style.",
8831
- "attribute": "variant",
8832
- "reflects": true,
8833
- "default": "default"
9516
+ "description": "Accessible name of the suggestion list.",
9517
+ "attribute": "suggestions-label",
9518
+ "reflects": false,
9519
+ "default": "Suggestions"
8834
9520
  },
8835
9521
  {
8836
9522
  "kind": "field",
@@ -8841,9 +9527,21 @@
8841
9527
  "description": "Corner radius.",
8842
9528
  "attribute": "radius",
8843
9529
  "reflects": true
9530
+ },
9531
+ {
9532
+ "kind": "method",
9533
+ "name": "refreshHighlight",
9534
+ "description": "Runs highlight again, when what it marks changed but the text did not."
8844
9535
  }
8845
9536
  ],
8846
9537
  "events": [
9538
+ {
9539
+ "name": "ray-complete",
9540
+ "type": {
9541
+ "text": "CustomEvent<{ item: CompletionItem; from: number; to: number }>"
9542
+ },
9543
+ "description": "A suggestion was accepted (the text already has it)."
9544
+ },
8847
9545
  {
8848
9546
  "name": "input",
8849
9547
  "type": {
@@ -8868,6 +9566,22 @@
8868
9566
  {
8869
9567
  "name": "wrapper",
8870
9568
  "description": "The box."
9569
+ },
9570
+ {
9571
+ "name": "suggestions",
9572
+ "description": "The suggestion list (a listbox in the top layer)."
9573
+ },
9574
+ {
9575
+ "name": "suggestion",
9576
+ "description": "Each suggestion ([aria-selected] when active)."
9577
+ },
9578
+ {
9579
+ "name": "highlight",
9580
+ "description": "Each marked range (also highlight-<kind> for a range with a kind)."
9581
+ },
9582
+ {
9583
+ "name": "text-layer",
9584
+ "description": "The layer behind the text that holds the marks."
8871
9585
  }
8872
9586
  ]
8873
9587
  }
@@ -9561,24 +10275,315 @@
9561
10275
  "kind": "custom-element-definition",
9562
10276
  "name": "ray-breadcrumbs",
9563
10277
  "declaration": {
9564
- "name": "RayBreadcrumbs",
9565
- "module": "components/breadcrumbs/breadcrumbs.js"
10278
+ "name": "RayBreadcrumbs",
10279
+ "module": "components/breadcrumbs/breadcrumbs.js"
10280
+ }
10281
+ },
10282
+ {
10283
+ "kind": "js",
10284
+ "name": "RayBreadcrumb",
10285
+ "declaration": {
10286
+ "name": "RayBreadcrumb",
10287
+ "module": "components/breadcrumbs/breadcrumbs.js"
10288
+ }
10289
+ },
10290
+ {
10291
+ "kind": "custom-element-definition",
10292
+ "name": "ray-breadcrumb",
10293
+ "declaration": {
10294
+ "name": "RayBreadcrumb",
10295
+ "module": "components/breadcrumbs/breadcrumbs.js"
10296
+ }
10297
+ }
10298
+ ]
10299
+ },
10300
+ {
10301
+ "kind": "javascript-module",
10302
+ "path": "components/doc-tabs/doc-tabs.js",
10303
+ "declarations": [
10304
+ {
10305
+ "kind": "class",
10306
+ "name": "RayDocTabs",
10307
+ "tagName": "ray-doc-tabs",
10308
+ "customElement": true,
10309
+ "description": "Unlike ray-tabs, a tab has no panel of its own: they all control the element named by panel, whose content the app fills for the selected one. Closing is the app's: the ×, a middle click or Delete/Backspace fire ray-request-close, and the app removes the tab (after asking about unsaved changes, if it must). When the selected tab is removed, the one at its place is selected (change) and, if the closed tab had the focus, focused. More tabs than width: the bar scrolls sideways, fades the edge that hides tabs (data-overflow-start / data-overflow-end on the host), scrolls with a vertical wheel and keeps the selected tab in view.",
10310
+ "superclass": {
10311
+ "name": "RayElement"
10312
+ },
10313
+ "attributes": [
10314
+ {
10315
+ "name": "value",
10316
+ "type": {
10317
+ "text": "string"
10318
+ },
10319
+ "description": "Value of the selected tab (default: the first).",
10320
+ "fieldName": "value"
10321
+ },
10322
+ {
10323
+ "name": "panel",
10324
+ "type": {
10325
+ "text": "string"
10326
+ },
10327
+ "description": "The id of the shared panel: it gets role=tabpanel and aria-labelledby the selected tab; the tabs get aria-controls.",
10328
+ "fieldName": "panel"
10329
+ },
10330
+ {
10331
+ "name": "label",
10332
+ "type": {
10333
+ "text": "string"
10334
+ },
10335
+ "description": "Accessible name of the tab list (\"Open requests\").",
10336
+ "fieldName": "label"
10337
+ },
10338
+ {
10339
+ "name": "close-label",
10340
+ "type": {
10341
+ "text": "string"
10342
+ },
10343
+ "description": "Tooltip of the ×.",
10344
+ "fieldName": "closeLabel",
10345
+ "default": "Close"
10346
+ },
10347
+ {
10348
+ "name": "dirty-label",
10349
+ "type": {
10350
+ "text": "string"
10351
+ },
10352
+ "description": "What assistive technology hears after the name of a dirty tab.",
10353
+ "fieldName": "dirtyLabel",
10354
+ "default": "Unsaved changes"
10355
+ }
10356
+ ],
10357
+ "members": [
10358
+ {
10359
+ "kind": "field",
10360
+ "name": "value",
10361
+ "type": {
10362
+ "text": "string"
10363
+ },
10364
+ "description": "Value of the selected tab (default: the first).",
10365
+ "attribute": "value",
10366
+ "reflects": false
10367
+ },
10368
+ {
10369
+ "kind": "field",
10370
+ "name": "panel",
10371
+ "type": {
10372
+ "text": "string"
10373
+ },
10374
+ "description": "The id of the shared panel: it gets role=tabpanel and aria-labelledby the selected tab; the tabs get aria-controls.",
10375
+ "attribute": "panel",
10376
+ "reflects": false
10377
+ },
10378
+ {
10379
+ "kind": "field",
10380
+ "name": "label",
10381
+ "type": {
10382
+ "text": "string"
10383
+ },
10384
+ "description": "Accessible name of the tab list (\"Open requests\").",
10385
+ "attribute": "label",
10386
+ "reflects": false
10387
+ },
10388
+ {
10389
+ "kind": "field",
10390
+ "name": "closeLabel",
10391
+ "type": {
10392
+ "text": "string"
10393
+ },
10394
+ "description": "Tooltip of the ×.",
10395
+ "attribute": "close-label",
10396
+ "reflects": false,
10397
+ "default": "Close"
10398
+ },
10399
+ {
10400
+ "kind": "field",
10401
+ "name": "dirtyLabel",
10402
+ "type": {
10403
+ "text": "string"
10404
+ },
10405
+ "description": "What assistive technology hears after the name of a dirty tab.",
10406
+ "attribute": "dirty-label",
10407
+ "reflects": false,
10408
+ "default": "Unsaved changes"
10409
+ },
10410
+ {
10411
+ "kind": "field",
10412
+ "name": "tabs",
10413
+ "description": "Its tabs, in order."
10414
+ },
10415
+ {
10416
+ "kind": "field",
10417
+ "name": "panelElement",
10418
+ "description": "The shared panel, found by the panel id."
10419
+ }
10420
+ ],
10421
+ "events": [
10422
+ {
10423
+ "name": "change",
10424
+ "type": {
10425
+ "text": "Event"
10426
+ },
10427
+ "description": "The selected tab changed: a click, the arrow keys, or the selected tab removed."
10428
+ },
10429
+ {
10430
+ "name": "ray-request-close",
10431
+ "type": {
10432
+ "text": "CustomEvent<{ value: string; tab: RayDocTab; source: \"button\" | \"middle\" | \"key\" }>"
10433
+ },
10434
+ "description": "The × was clicked, the tab middle-clicked, or Delete/Backspace pressed on it: remove the tab to close it (not fired for hide-close tabs)."
10435
+ }
10436
+ ],
10437
+ "slots": [
10438
+ {
10439
+ "name": "",
10440
+ "description": "ray-doc-tab elements."
10441
+ },
10442
+ {
10443
+ "name": "end",
10444
+ "description": "After the tabs, outside the scrolling list: a new-tab button."
10445
+ }
10446
+ ],
10447
+ "cssParts": [
10448
+ {
10449
+ "name": "list",
10450
+ "description": "The tab list (it scrolls sideways when the tabs do not fit)."
10451
+ },
10452
+ {
10453
+ "name": "end",
10454
+ "description": "The end slot's box."
10455
+ }
10456
+ ]
10457
+ },
10458
+ {
10459
+ "kind": "class",
10460
+ "name": "RayDocTab",
10461
+ "tagName": "ray-doc-tab",
10462
+ "customElement": true,
10463
+ "description": "A document's tab: an icon or tag (slot left), its name (cut with an ellipsis; give the full one in title), and the × or the unsaved dot.",
10464
+ "superclass": {
10465
+ "name": "RayElement"
10466
+ },
10467
+ "attributes": [
10468
+ {
10469
+ "name": "value",
10470
+ "type": {
10471
+ "text": "string"
10472
+ },
10473
+ "description": "Identifies the document (ray-doc-tabs value).",
10474
+ "fieldName": "value"
10475
+ },
10476
+ {
10477
+ "name": "dirty",
10478
+ "type": {
10479
+ "text": "boolean"
10480
+ },
10481
+ "description": "Unsaved changes: a dot in place of the ×, which comes back under the pointer.",
10482
+ "fieldName": "dirty"
10483
+ },
10484
+ {
10485
+ "name": "hide-close",
10486
+ "type": {
10487
+ "text": "boolean"
10488
+ },
10489
+ "description": "Cannot be closed: no ×, no middle click, no Delete.",
10490
+ "fieldName": "hideClose"
10491
+ }
10492
+ ],
10493
+ "members": [
10494
+ {
10495
+ "kind": "field",
10496
+ "name": "value",
10497
+ "type": {
10498
+ "text": "string"
10499
+ },
10500
+ "description": "Identifies the document (ray-doc-tabs value).",
10501
+ "attribute": "value",
10502
+ "reflects": true
10503
+ },
10504
+ {
10505
+ "kind": "field",
10506
+ "name": "dirty",
10507
+ "type": {
10508
+ "text": "boolean"
10509
+ },
10510
+ "description": "Unsaved changes: a dot in place of the ×, which comes back under the pointer.",
10511
+ "attribute": "dirty",
10512
+ "reflects": true
10513
+ },
10514
+ {
10515
+ "kind": "field",
10516
+ "name": "hideClose",
10517
+ "type": {
10518
+ "text": "boolean"
10519
+ },
10520
+ "description": "Cannot be closed: no ×, no middle click, no Delete.",
10521
+ "attribute": "hide-close",
10522
+ "reflects": true
10523
+ }
10524
+ ],
10525
+ "events": [],
10526
+ "slots": [
10527
+ {
10528
+ "name": "",
10529
+ "description": "The document's name."
10530
+ },
10531
+ {
10532
+ "name": "left",
10533
+ "description": "An icon or a tag (a file type, an HTTP method)."
10534
+ }
10535
+ ],
10536
+ "cssParts": [
10537
+ {
10538
+ "name": "label",
10539
+ "description": "The name."
10540
+ },
10541
+ {
10542
+ "name": "left-section",
10543
+ "description": "The left slot's box."
10544
+ },
10545
+ {
10546
+ "name": "close",
10547
+ "description": "The × (pointer only: it is not focusable)."
10548
+ },
10549
+ {
10550
+ "name": "dot",
10551
+ "description": "The unsaved mark."
10552
+ }
10553
+ ]
10554
+ }
10555
+ ],
10556
+ "exports": [
10557
+ {
10558
+ "kind": "js",
10559
+ "name": "RayDocTabs",
10560
+ "declaration": {
10561
+ "name": "RayDocTabs",
10562
+ "module": "components/doc-tabs/doc-tabs.js"
10563
+ }
10564
+ },
10565
+ {
10566
+ "kind": "custom-element-definition",
10567
+ "name": "ray-doc-tabs",
10568
+ "declaration": {
10569
+ "name": "RayDocTabs",
10570
+ "module": "components/doc-tabs/doc-tabs.js"
9566
10571
  }
9567
10572
  },
9568
10573
  {
9569
10574
  "kind": "js",
9570
- "name": "RayBreadcrumb",
10575
+ "name": "RayDocTab",
9571
10576
  "declaration": {
9572
- "name": "RayBreadcrumb",
9573
- "module": "components/breadcrumbs/breadcrumbs.js"
10577
+ "name": "RayDocTab",
10578
+ "module": "components/doc-tabs/doc-tabs.js"
9574
10579
  }
9575
10580
  },
9576
10581
  {
9577
10582
  "kind": "custom-element-definition",
9578
- "name": "ray-breadcrumb",
10583
+ "name": "ray-doc-tab",
9579
10584
  "declaration": {
9580
- "name": "RayBreadcrumb",
9581
- "module": "components/breadcrumbs/breadcrumbs.js"
10585
+ "name": "RayDocTab",
10586
+ "module": "components/doc-tabs/doc-tabs.js"
9582
10587
  }
9583
10588
  }
9584
10589
  ]
@@ -10169,9 +11174,18 @@
10169
11174
  "type": {
10170
11175
  "text": "boolean"
10171
11176
  },
10172
- "description": "Wide screens: an icon rail instead of the full panel.",
11177
+ "description": "Wide screens: collapsed as collapse says (an icon rail, or out of view).",
10173
11178
  "fieldName": "collapsed"
10174
11179
  },
11180
+ {
11181
+ "name": "collapse",
11182
+ "type": {
11183
+ "text": "\"icon\" | \"offcanvas\""
11184
+ },
11185
+ "description": "What collapsed does on wide screens: icon, a rail of the nav links' icons; offcanvas, hidden entirely (no width, out of the tab order).",
11186
+ "fieldName": "collapse",
11187
+ "default": "icon"
11188
+ },
10175
11189
  {
10176
11190
  "name": "open",
10177
11191
  "type": {
@@ -10183,11 +11197,11 @@
10183
11197
  {
10184
11198
  "name": "side",
10185
11199
  "type": {
10186
- "text": "\"left\" | \"right\""
11200
+ "text": "\"start\" | \"end\" | \"left\" | \"right\""
10187
11201
  },
10188
- "description": "The edge it sits on.",
11202
+ "description": "The edge it sits on (its border faces the content, its narrow-screen drawer slides from there): start/end follow the writing direction; left/right are sides of the screen.",
10189
11203
  "fieldName": "side",
10190
- "default": "left"
11204
+ "default": "start"
10191
11205
  },
10192
11206
  {
10193
11207
  "name": "variant",
@@ -10231,6 +11245,49 @@
10231
11245
  "description": "Accessible name of its navigation.",
10232
11246
  "fieldName": "label",
10233
11247
  "default": "Sidebar"
11248
+ },
11249
+ {
11250
+ "name": "resizable",
11251
+ "type": {
11252
+ "text": "boolean"
11253
+ },
11254
+ "description": "Wide screens, expanded: its inner edge drags (or, focused, arrow-keys; Shift is faster, Home/End go to the limits) the width between min-width and max-width.",
11255
+ "fieldName": "resizable"
11256
+ },
11257
+ {
11258
+ "name": "min-width",
11259
+ "type": {
11260
+ "text": "number"
11261
+ },
11262
+ "description": "Narrowest width when resizing, in px.",
11263
+ "fieldName": "minWidth",
11264
+ "default": "192"
11265
+ },
11266
+ {
11267
+ "name": "max-width",
11268
+ "type": {
11269
+ "text": "number"
11270
+ },
11271
+ "description": "Widest width when resizing, in px.",
11272
+ "fieldName": "maxWidth",
11273
+ "default": "480"
11274
+ },
11275
+ {
11276
+ "name": "autosave",
11277
+ "type": {
11278
+ "text": "string"
11279
+ },
11280
+ "description": "A key: the resized width is saved in localStorage and restored. A later change of width wins.",
11281
+ "fieldName": "autosave"
11282
+ },
11283
+ {
11284
+ "name": "resize-label",
11285
+ "type": {
11286
+ "text": "string"
11287
+ },
11288
+ "description": "Accessible name of the resize edge.",
11289
+ "fieldName": "resizeLabel",
11290
+ "default": "Resize sidebar"
10234
11291
  }
10235
11292
  ],
10236
11293
  "members": [
@@ -10240,10 +11297,21 @@
10240
11297
  "type": {
10241
11298
  "text": "boolean"
10242
11299
  },
10243
- "description": "Wide screens: an icon rail instead of the full panel.",
11300
+ "description": "Wide screens: collapsed as collapse says (an icon rail, or out of view).",
10244
11301
  "attribute": "collapsed",
10245
11302
  "reflects": true
10246
11303
  },
11304
+ {
11305
+ "kind": "field",
11306
+ "name": "collapse",
11307
+ "type": {
11308
+ "text": "\"icon\" | \"offcanvas\""
11309
+ },
11310
+ "description": "What collapsed does on wide screens: icon, a rail of the nav links' icons; offcanvas, hidden entirely (no width, out of the tab order).",
11311
+ "attribute": "collapse",
11312
+ "reflects": true,
11313
+ "default": "icon"
11314
+ },
10247
11315
  {
10248
11316
  "kind": "field",
10249
11317
  "name": "open",
@@ -10258,12 +11326,12 @@
10258
11326
  "kind": "field",
10259
11327
  "name": "side",
10260
11328
  "type": {
10261
- "text": "\"left\" | \"right\""
11329
+ "text": "\"start\" | \"end\" | \"left\" | \"right\""
10262
11330
  },
10263
- "description": "The edge it sits on.",
11331
+ "description": "The edge it sits on (its border faces the content, its narrow-screen drawer slides from there): start/end follow the writing direction; left/right are sides of the screen.",
10264
11332
  "attribute": "side",
10265
11333
  "reflects": true,
10266
- "default": "left"
11334
+ "default": "start"
10267
11335
  },
10268
11336
  {
10269
11337
  "kind": "field",
@@ -10318,6 +11386,59 @@
10318
11386
  "reflects": false,
10319
11387
  "default": "Sidebar"
10320
11388
  },
11389
+ {
11390
+ "kind": "field",
11391
+ "name": "resizable",
11392
+ "type": {
11393
+ "text": "boolean"
11394
+ },
11395
+ "description": "Wide screens, expanded: its inner edge drags (or, focused, arrow-keys; Shift is faster, Home/End go to the limits) the width between min-width and max-width.",
11396
+ "attribute": "resizable",
11397
+ "reflects": true
11398
+ },
11399
+ {
11400
+ "kind": "field",
11401
+ "name": "minWidth",
11402
+ "type": {
11403
+ "text": "number"
11404
+ },
11405
+ "description": "Narrowest width when resizing, in px.",
11406
+ "attribute": "min-width",
11407
+ "reflects": false,
11408
+ "default": "192"
11409
+ },
11410
+ {
11411
+ "kind": "field",
11412
+ "name": "maxWidth",
11413
+ "type": {
11414
+ "text": "number"
11415
+ },
11416
+ "description": "Widest width when resizing, in px.",
11417
+ "attribute": "max-width",
11418
+ "reflects": false,
11419
+ "default": "480"
11420
+ },
11421
+ {
11422
+ "kind": "field",
11423
+ "name": "autosave",
11424
+ "type": {
11425
+ "text": "string"
11426
+ },
11427
+ "description": "A key: the resized width is saved in localStorage and restored. A later change of width wins.",
11428
+ "attribute": "autosave",
11429
+ "reflects": false
11430
+ },
11431
+ {
11432
+ "kind": "field",
11433
+ "name": "resizeLabel",
11434
+ "type": {
11435
+ "text": "string"
11436
+ },
11437
+ "description": "Accessible name of the resize edge.",
11438
+ "attribute": "resize-label",
11439
+ "reflects": false,
11440
+ "default": "Resize sidebar"
11441
+ },
10321
11442
  {
10322
11443
  "kind": "method",
10323
11444
  "name": "toggle",
@@ -10330,6 +11451,13 @@
10330
11451
  }
10331
11452
  ],
10332
11453
  "events": [
11454
+ {
11455
+ "name": "ray-resize",
11456
+ "type": {
11457
+ "text": "CustomEvent<{ width: number }>"
11458
+ },
11459
+ "description": "After a drag or a key resized it (resizable)."
11460
+ },
10333
11461
  {
10334
11462
  "name": "ray-toggle",
10335
11463
  "type": {
@@ -10383,6 +11511,10 @@
10383
11511
  "name": "footer",
10384
11512
  "description": "The footer area."
10385
11513
  },
11514
+ {
11515
+ "name": "resizer",
11516
+ "description": "The resize edge (a separator), shown when resizable."
11517
+ },
10386
11518
  {
10387
11519
  "name": "drawer",
10388
11520
  "description": "The <dialog> used on narrow screens."
@@ -10509,11 +11641,11 @@
10509
11641
  {
10510
11642
  "name": "icon-position",
10511
11643
  "type": {
10512
- "text": "\"left\" | \"top\""
11644
+ "text": "\"start\" | \"top\" | \"left\""
10513
11645
  },
10514
- "description": "Label beside the number, or under it (narrow screens, many steps).",
11646
+ "description": "Label beside the number (after it in the reading direction), or under it (narrow screens, many steps). \"left\", its former name, still works.",
10515
11647
  "fieldName": "iconPosition",
10516
- "default": "left"
11648
+ "default": "start"
10517
11649
  },
10518
11650
  {
10519
11651
  "name": "allow-step-select",
@@ -10586,12 +11718,12 @@
10586
11718
  "kind": "field",
10587
11719
  "name": "iconPosition",
10588
11720
  "type": {
10589
- "text": "\"left\" | \"top\""
11721
+ "text": "\"start\" | \"top\" | \"left\""
10590
11722
  },
10591
- "description": "Label beside the number, or under it (narrow screens, many steps).",
11723
+ "description": "Label beside the number (after it in the reading direction), or under it (narrow screens, many steps). \"left\", its former name, still works.",
10592
11724
  "attribute": "icon-position",
10593
11725
  "reflects": true,
10594
- "default": "left"
11726
+ "default": "start"
10595
11727
  },
10596
11728
  {
10597
11729
  "kind": "field",
@@ -10905,7 +12037,7 @@
10905
12037
  "name": "RayTabs",
10906
12038
  "tagName": "ray-tabs",
10907
12039
  "customElement": true,
10908
- "description": "Tabs and panels (WAI-ARIA tabs pattern): arrows, Home/End, automatic or manual activation.",
12040
+ "description": "More tabs than width: the list scrolls sideways, fades the edge that hides tabs, scrolls with a vertical wheel and keeps the selected tab in view. The host then carries data-overflow-start and data-overflow-end (following the writing direction), to style it further.",
10909
12041
  "superclass": {
10910
12042
  "name": "RayElement"
10911
12043
  },
@@ -10944,6 +12076,15 @@
10944
12076
  "description": "Active indicator color.",
10945
12077
  "fieldName": "color"
10946
12078
  },
12079
+ {
12080
+ "name": "size",
12081
+ "type": {
12082
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\""
12083
+ },
12084
+ "description": "Height, font size and padding of the tabs (xs for a compact bar).",
12085
+ "fieldName": "size",
12086
+ "default": "sm"
12087
+ },
10947
12088
  {
10948
12089
  "name": "activation",
10949
12090
  "type": {
@@ -11005,6 +12146,17 @@
11005
12146
  "attribute": "color",
11006
12147
  "reflects": true
11007
12148
  },
12149
+ {
12150
+ "kind": "field",
12151
+ "name": "size",
12152
+ "type": {
12153
+ "text": "\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\""
12154
+ },
12155
+ "description": "Height, font size and padding of the tabs (xs for a compact bar).",
12156
+ "attribute": "size",
12157
+ "reflects": true,
12158
+ "default": "sm"
12159
+ },
11008
12160
  {
11009
12161
  "kind": "field",
11010
12162
  "name": "activation",
@@ -11055,7 +12207,7 @@
11055
12207
  "cssParts": [
11056
12208
  {
11057
12209
  "name": "list",
11058
- "description": "The tab list."
12210
+ "description": "The tab list (it scrolls sideways when the tabs do not fit)."
11059
12211
  },
11060
12212
  {
11061
12213
  "name": "panels",
@@ -11088,6 +12240,14 @@
11088
12240
  },
11089
12241
  "description": "Cannot be activated.",
11090
12242
  "fieldName": "disabled"
12243
+ },
12244
+ {
12245
+ "name": "count",
12246
+ "type": {
12247
+ "text": "string"
12248
+ },
12249
+ "description": "A small number after the label (\"3\", \"99+\"), lighter than a badge; part of the tab's accessible name. Empty: none.",
12250
+ "fieldName": "count"
11091
12251
  }
11092
12252
  ],
11093
12253
  "members": [
@@ -11110,6 +12270,16 @@
11110
12270
  "description": "Cannot be activated.",
11111
12271
  "attribute": "disabled",
11112
12272
  "reflects": true
12273
+ },
12274
+ {
12275
+ "kind": "field",
12276
+ "name": "count",
12277
+ "type": {
12278
+ "text": "string"
12279
+ },
12280
+ "description": "A small number after the label (\"3\", \"99+\"), lighter than a badge; part of the tab's accessible name. Empty: none.",
12281
+ "attribute": "count",
12282
+ "reflects": true
11113
12283
  }
11114
12284
  ],
11115
12285
  "events": [],
@@ -11120,10 +12290,15 @@
11120
12290
  },
11121
12291
  {
11122
12292
  "name": "right",
11123
- "description": "Badge or count."
12293
+ "description": "A badge or other content after the label (for a plain number, count is lighter)."
11124
12294
  }
11125
12295
  ],
11126
- "cssParts": []
12296
+ "cssParts": [
12297
+ {
12298
+ "name": "count",
12299
+ "description": "The count."
12300
+ }
12301
+ ]
11127
12302
  },
11128
12303
  {
11129
12304
  "kind": "class",
@@ -11295,6 +12470,33 @@
11295
12470
  "description": "No keyboard hint at the bottom.",
11296
12471
  "fieldName": "hideHint"
11297
12472
  },
12473
+ {
12474
+ "name": "navigate-label",
12475
+ "type": {
12476
+ "text": "string"
12477
+ },
12478
+ "description": "The keyboard hint's word for ↑↓.",
12479
+ "fieldName": "navigateLabel",
12480
+ "default": "navigate"
12481
+ },
12482
+ {
12483
+ "name": "run-label",
12484
+ "type": {
12485
+ "text": "string"
12486
+ },
12487
+ "description": "The keyboard hint's word for ↵.",
12488
+ "fieldName": "runLabel",
12489
+ "default": "run"
12490
+ },
12491
+ {
12492
+ "name": "close-label",
12493
+ "type": {
12494
+ "text": "string"
12495
+ },
12496
+ "description": "The keyboard hint's word for esc.",
12497
+ "fieldName": "closeLabel",
12498
+ "default": "close"
12499
+ },
11298
12500
  {
11299
12501
  "name": "native-menus",
11300
12502
  "type": {
@@ -11406,6 +12608,39 @@
11406
12608
  "attribute": "hide-hint",
11407
12609
  "reflects": true
11408
12610
  },
12611
+ {
12612
+ "kind": "field",
12613
+ "name": "navigateLabel",
12614
+ "type": {
12615
+ "text": "string"
12616
+ },
12617
+ "description": "The keyboard hint's word for ↑↓.",
12618
+ "attribute": "navigate-label",
12619
+ "reflects": false,
12620
+ "default": "navigate"
12621
+ },
12622
+ {
12623
+ "kind": "field",
12624
+ "name": "runLabel",
12625
+ "type": {
12626
+ "text": "string"
12627
+ },
12628
+ "description": "The keyboard hint's word for ↵.",
12629
+ "attribute": "run-label",
12630
+ "reflects": false,
12631
+ "default": "run"
12632
+ },
12633
+ {
12634
+ "kind": "field",
12635
+ "name": "closeLabel",
12636
+ "type": {
12637
+ "text": "string"
12638
+ },
12639
+ "description": "The keyboard hint's word for esc.",
12640
+ "attribute": "close-label",
12641
+ "reflects": false,
12642
+ "default": "close"
12643
+ },
11409
12644
  {
11410
12645
  "kind": "field",
11411
12646
  "name": "nativeMenus",
@@ -11877,11 +13112,11 @@
11877
13112
  {
11878
13113
  "name": "position",
11879
13114
  "type": {
11880
- "text": "\"right\" | \"left\" | \"top\" | \"bottom\""
13115
+ "text": "\"end\" | \"start\" | \"right\" | \"left\" | \"top\" | \"bottom\""
11881
13116
  },
11882
- "description": "The edge it slides from.",
13117
+ "description": "The edge it slides from: start/end follow the writing direction; left/right are sides of the screen.",
11883
13118
  "fieldName": "position",
11884
- "default": "right"
13119
+ "default": "end"
11885
13120
  },
11886
13121
  {
11887
13122
  "name": "size",
@@ -11968,12 +13203,12 @@
11968
13203
  "kind": "field",
11969
13204
  "name": "position",
11970
13205
  "type": {
11971
- "text": "\"right\" | \"left\" | \"top\" | \"bottom\""
13206
+ "text": "\"end\" | \"start\" | \"right\" | \"left\" | \"top\" | \"bottom\""
11972
13207
  },
11973
- "description": "The edge it slides from.",
13208
+ "description": "The edge it slides from: start/end follow the writing direction; left/right are sides of the screen.",
11974
13209
  "attribute": "position",
11975
13210
  "reflects": true,
11976
- "default": "right"
13211
+ "default": "end"
11977
13212
  },
11978
13213
  {
11979
13214
  "kind": "field",
@@ -12147,7 +13382,7 @@
12147
13382
  "type": {
12148
13383
  "text": "\"bottom-start\" | \"bottom\" | \"bottom-end\" | \"top-start\" | \"top\" | \"top-end\" | \"right-start\" | \"left-start\""
12149
13384
  },
12150
- "description": "Preferred side and alignment.",
13385
+ "description": "Preferred side and alignment: top/bottom/left/right are sides of the screen; on top and bottom, -start/-end follow the writing direction (right to left, \"bottom-start\" lines up the right edges).",
12151
13386
  "fieldName": "placement",
12152
13387
  "default": "bottom-start"
12153
13388
  },
@@ -12202,7 +13437,7 @@
12202
13437
  "type": {
12203
13438
  "text": "\"bottom-start\" | \"bottom\" | \"bottom-end\" | \"top-start\" | \"top\" | \"top-end\" | \"right-start\" | \"left-start\""
12204
13439
  },
12205
- "description": "Preferred side and alignment.",
13440
+ "description": "Preferred side and alignment: top/bottom/left/right are sides of the screen; on top and bottom, -start/-end follow the writing direction (right to left, \"bottom-start\" lines up the right edges).",
12206
13441
  "attribute": "placement",
12207
13442
  "reflects": true,
12208
13443
  "default": "bottom-start"
@@ -12287,6 +13522,13 @@
12287
13522
  },
12288
13523
  "description": "An item was chosen; detail: { value, item }."
12289
13524
  },
13525
+ {
13526
+ "name": "ray-request-open",
13527
+ "type": {
13528
+ "text": "CustomEvent<{ event: Event }>"
13529
+ },
13530
+ "description": "Its trigger is about to open it (click, Arrow keys, right click), before the items are read, native menu included: fill items that depend on what was clicked here. Cancelable (preventDefault keeps it closed). Not fired by show() or open = true. detail: { event }."
13531
+ },
12290
13532
  {
12291
13533
  "name": "ray-open",
12292
13534
  "type": {
@@ -12352,6 +13594,31 @@
12352
13594
  },
12353
13595
  "description": "Text and hover color (e.g. red for destructive actions).",
12354
13596
  "fieldName": "color"
13597
+ },
13598
+ {
13599
+ "name": "type",
13600
+ "type": {
13601
+ "text": "\"item\" | \"checkbox\" | \"radio\""
13602
+ },
13603
+ "description": "checkbox: choosing it toggles checked (menuitemcheckbox); radio: choosing it checks it and unchecks the radio items of the menu with the same name (menuitemradio). Both show a check mark when checked, in the native menu too.",
13604
+ "fieldName": "type",
13605
+ "default": "item"
13606
+ },
13607
+ {
13608
+ "name": "checked",
13609
+ "type": {
13610
+ "text": "boolean"
13611
+ },
13612
+ "description": "Checked (checkbox and radio items). Already updated when ray-select fires.",
13613
+ "fieldName": "checked"
13614
+ },
13615
+ {
13616
+ "name": "name",
13617
+ "type": {
13618
+ "text": "string"
13619
+ },
13620
+ "description": "The group of a radio item: one checked per name in the menu.",
13621
+ "fieldName": "name"
12355
13622
  }
12356
13623
  ],
12357
13624
  "members": [
@@ -12384,6 +13651,42 @@
12384
13651
  "description": "Text and hover color (e.g. red for destructive actions).",
12385
13652
  "attribute": "color",
12386
13653
  "reflects": true
13654
+ },
13655
+ {
13656
+ "kind": "field",
13657
+ "name": "type",
13658
+ "type": {
13659
+ "text": "\"item\" | \"checkbox\" | \"radio\""
13660
+ },
13661
+ "description": "checkbox: choosing it toggles checked (menuitemcheckbox); radio: choosing it checks it and unchecks the radio items of the menu with the same name (menuitemradio). Both show a check mark when checked, in the native menu too.",
13662
+ "attribute": "type",
13663
+ "reflects": true,
13664
+ "default": "item"
13665
+ },
13666
+ {
13667
+ "kind": "field",
13668
+ "name": "checked",
13669
+ "type": {
13670
+ "text": "boolean"
13671
+ },
13672
+ "description": "Checked (checkbox and radio items). Already updated when ray-select fires.",
13673
+ "attribute": "checked",
13674
+ "reflects": true
13675
+ },
13676
+ {
13677
+ "kind": "field",
13678
+ "name": "name",
13679
+ "type": {
13680
+ "text": "string"
13681
+ },
13682
+ "description": "The group of a radio item: one checked per name in the menu.",
13683
+ "attribute": "name",
13684
+ "reflects": true
13685
+ },
13686
+ {
13687
+ "kind": "field",
13688
+ "name": "checkable",
13689
+ "description": "Whether type is checkbox or radio."
12387
13690
  }
12388
13691
  ],
12389
13692
  "events": [],
@@ -12401,7 +13704,12 @@
12401
13704
  "description": "Shortcut or badge."
12402
13705
  }
12403
13706
  ],
12404
- "cssParts": []
13707
+ "cssParts": [
13708
+ {
13709
+ "name": "mark",
13710
+ "description": "The check mark of a checkbox or radio item."
13711
+ }
13712
+ ]
12405
13713
  },
12406
13714
  {
12407
13715
  "kind": "class",
@@ -12528,7 +13836,7 @@
12528
13836
  "type": {
12529
13837
  "text": "\"bottom\" | \"bottom-start\" | \"bottom-end\" | \"top\" | \"top-start\" | \"top-end\" | \"left\" | \"left-start\" | \"left-end\" | \"right\" | \"right-start\" | \"right-end\""
12530
13838
  },
12531
- "description": "Preferred side and alignment.",
13839
+ "description": "Preferred side and alignment: top/bottom/left/right are sides of the screen; on top and bottom, -start/-end follow the writing direction (right to left, \"bottom-start\" lines up the right edges).",
12532
13840
  "fieldName": "placement",
12533
13841
  "default": "bottom"
12534
13842
  },
@@ -12592,7 +13900,7 @@
12592
13900
  "type": {
12593
13901
  "text": "\"bottom\" | \"bottom-start\" | \"bottom-end\" | \"top\" | \"top-start\" | \"top-end\" | \"left\" | \"left-start\" | \"left-end\" | \"right\" | \"right-start\" | \"right-end\""
12594
13902
  },
12595
- "description": "Preferred side and alignment.",
13903
+ "description": "Preferred side and alignment: top/bottom/left/right are sides of the screen; on top and bottom, -start/-end follow the writing direction (right to left, \"bottom-start\" lines up the right edges).",
12596
13904
  "attribute": "placement",
12597
13905
  "reflects": true,
12598
13906
  "default": "bottom"
@@ -12750,7 +14058,7 @@
12750
14058
  "type": {
12751
14059
  "text": "\"top\" | \"bottom\" | \"left\" | \"right\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\""
12752
14060
  },
12753
- "description": "Preferred side.",
14061
+ "description": "Preferred side; -start/-end follow the writing direction.",
12754
14062
  "fieldName": "placement",
12755
14063
  "default": "top"
12756
14064
  },
@@ -12823,7 +14131,7 @@
12823
14131
  "type": {
12824
14132
  "text": "\"top\" | \"bottom\" | \"left\" | \"right\" | \"top-start\" | \"top-end\" | \"bottom-start\" | \"bottom-end\""
12825
14133
  },
12826
- "description": "Preferred side.",
14134
+ "description": "Preferred side; -start/-end follow the writing direction.",
12827
14135
  "attribute": "placement",
12828
14136
  "reflects": true,
12829
14137
  "default": "top"
@@ -12988,11 +14296,11 @@
12988
14296
  {
12989
14297
  "name": "chevron-position",
12990
14298
  "type": {
12991
- "text": "\"right\" | \"left\""
14299
+ "text": "\"end\" | \"start\" | \"right\" | \"left\""
12992
14300
  },
12993
- "description": "Side of the chevron.",
14301
+ "description": "Side of the chevron: start/end follow the writing direction; left/right are sides of the screen.",
12994
14302
  "fieldName": "chevronPosition",
12995
- "default": "right"
14303
+ "default": "end"
12996
14304
  }
12997
14305
  ],
12998
14306
  "members": [
@@ -13031,12 +14339,12 @@
13031
14339
  "kind": "field",
13032
14340
  "name": "chevronPosition",
13033
14341
  "type": {
13034
- "text": "\"right\" | \"left\""
14342
+ "text": "\"end\" | \"start\" | \"right\" | \"left\""
13035
14343
  },
13036
- "description": "Side of the chevron.",
14344
+ "description": "Side of the chevron: start/end follow the writing direction; left/right are sides of the screen.",
13037
14345
  "attribute": "chevron-position",
13038
14346
  "reflects": true,
13039
- "default": "right"
14347
+ "default": "end"
13040
14348
  },
13041
14349
  {
13042
14350
  "kind": "field",
@@ -14485,7 +15793,7 @@
14485
15793
  "name": "RayCode",
14486
15794
  "tagName": "ray-code",
14487
15795
  "customElement": true,
14488
- "description": "The code comes from the code property, a <script type=\"text/plain\"> child (raw text: anything but a closing script tag), a <template> child (parsed as HTML: the easiest for markup, but a < that is not a tag, as in Promise<void>, breaks it), or the element's text; common indentation and blank edges are removed. Built-in languages: js/ts (jsx, tsx), json, html/xml/svg/vue, css, shell, ray and diff; others show as plain text. Library classes painted with the tokens: Prism's .token.*, highlight.js's .hljs-*, and Shiki's css-variables theme.",
15796
+ "description": "The code comes from the code property, a <script type=\"text/plain\"> child (raw text: anything but a closing script tag), a <template> child (parsed as HTML: the easiest for markup, but a < that is not a tag, as in Promise<void>, breaks it), or the element's text; common indentation and blank edges are removed (not with verbatim). Built-in languages: js/ts (jsx, tsx), json, html/xml/svg/vue, css, shell, ray and diff; others show as plain text. Library classes painted with the tokens: Prism's .token.*, highlight.js's .hljs-*, and Shiki's css-variables theme.",
14489
15797
  "superclass": {
14490
15798
  "name": "RayElement"
14491
15799
  },
@@ -14530,6 +15838,14 @@
14530
15838
  "description": "Wraps long lines instead of scrolling sideways.",
14531
15839
  "fieldName": "wrap"
14532
15840
  },
15841
+ {
15842
+ "name": "verbatim",
15843
+ "type": {
15844
+ "text": "boolean"
15845
+ },
15846
+ "description": "Shows and copies the text exactly as given: no common indentation or blank first and last lines removed. For data (a response body, a log) rather than code written in the page.",
15847
+ "fieldName": "verbatim"
15848
+ },
14533
15849
  {
14534
15850
  "name": "max-height",
14535
15851
  "type": {
@@ -14657,6 +15973,16 @@
14657
15973
  "attribute": "wrap",
14658
15974
  "reflects": true
14659
15975
  },
15976
+ {
15977
+ "kind": "field",
15978
+ "name": "verbatim",
15979
+ "type": {
15980
+ "text": "boolean"
15981
+ },
15982
+ "description": "Shows and copies the text exactly as given: no common indentation or blank first and last lines removed. For data (a response body, a log) rather than code written in the page.",
15983
+ "attribute": "verbatim",
15984
+ "reflects": true
15985
+ },
14660
15986
  {
14661
15987
  "kind": "field",
14662
15988
  "name": "maxHeight",
@@ -14865,6 +16191,14 @@
14865
16191
  "description": "The filled version, for a state (active, selected, favorite, unread); the outline icon when there is none. Built in: user, info, circle-check, alert-triangle, circle-x, folder, bell, star, settings, home, message-circle.",
14866
16192
  "fieldName": "filled"
14867
16193
  },
16194
+ {
16195
+ "name": "mirror",
16196
+ "type": {
16197
+ "text": "boolean"
16198
+ },
16199
+ "description": "Mirrored in a right-to-left context (dir=\"rtl\"), for an icon that points along the text: back, forward, send, undo. The roles that do (ui.next, ui.previous, ui.first, ui.last, ui.disclosure, ui.separator) mirror by themselves.",
16200
+ "fieldName": "mirror"
16201
+ },
14868
16202
  {
14869
16203
  "name": "size",
14870
16204
  "type": {
@@ -14919,6 +16253,16 @@
14919
16253
  "attribute": "filled",
14920
16254
  "reflects": true
14921
16255
  },
16256
+ {
16257
+ "kind": "field",
16258
+ "name": "mirror",
16259
+ "type": {
16260
+ "text": "boolean"
16261
+ },
16262
+ "description": "Mirrored in a right-to-left context (dir=\"rtl\"), for an icon that points along the text: back, forward, send, undo. The roles that do (ui.next, ui.previous, ui.first, ui.last, ui.disclosure, ui.separator) mirror by themselves.",
16263
+ "attribute": "mirror",
16264
+ "reflects": true
16265
+ },
14922
16266
  {
14923
16267
  "kind": "field",
14924
16268
  "name": "size",
@@ -15871,11 +17215,11 @@
15871
17215
  {
15872
17216
  "name": "align",
15873
17217
  "type": {
15874
- "text": "\"left\" | \"right\""
17218
+ "text": "\"start\" | \"end\" | \"left\" | \"right\""
15875
17219
  },
15876
- "description": "Side of the line.",
17220
+ "description": "Side of the line: start/end follow the writing direction; left/right are sides of the screen.",
15877
17221
  "fieldName": "align",
15878
- "default": "left"
17222
+ "default": "start"
15879
17223
  },
15880
17224
  {
15881
17225
  "name": "bullet-size",
@@ -15926,12 +17270,12 @@
15926
17270
  "kind": "field",
15927
17271
  "name": "align",
15928
17272
  "type": {
15929
- "text": "\"left\" | \"right\""
17273
+ "text": "\"start\" | \"end\" | \"left\" | \"right\""
15930
17274
  },
15931
- "description": "Side of the line.",
17275
+ "description": "Side of the line: start/end follow the writing direction; left/right are sides of the screen.",
15932
17276
  "attribute": "align",
15933
17277
  "reflects": true,
15934
- "default": "left"
17278
+ "default": "start"
15935
17279
  },
15936
17280
  {
15937
17281
  "kind": "field",
@@ -16657,11 +18001,11 @@
16657
18001
  {
16658
18002
  "name": "position",
16659
18003
  "type": {
16660
- "text": "\"bottom-right\" | \"bottom-left\" | \"bottom-center\" | \"top-right\" | \"top-left\" | \"top-center\""
18004
+ "text": "\"bottom-end\" | \"bottom-start\" | \"bottom-center\" | \"top-end\" | \"top-start\" | \"top-center\" | \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\""
16661
18005
  },
16662
- "description": "Corner of the stack.",
18006
+ "description": "Corner of the stack: -start/-end follow the writing direction; -left/-right are sides of the screen.",
16663
18007
  "fieldName": "position",
16664
- "default": "bottom-right"
18008
+ "default": "bottom-end"
16665
18009
  },
16666
18010
  {
16667
18011
  "name": "limit",
@@ -16704,12 +18048,12 @@
16704
18048
  "kind": "field",
16705
18049
  "name": "position",
16706
18050
  "type": {
16707
- "text": "\"bottom-right\" | \"bottom-left\" | \"bottom-center\" | \"top-right\" | \"top-left\" | \"top-center\""
18051
+ "text": "\"bottom-end\" | \"bottom-start\" | \"bottom-center\" | \"top-end\" | \"top-start\" | \"top-center\" | \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\""
16708
18052
  },
16709
- "description": "Corner of the stack.",
18053
+ "description": "Corner of the stack: -start/-end follow the writing direction; -left/-right are sides of the screen.",
16710
18054
  "attribute": "position",
16711
18055
  "reflects": true,
16712
- "default": "bottom-right"
18056
+ "default": "bottom-end"
16713
18057
  },
16714
18058
  {
16715
18059
  "kind": "field",
@@ -19134,21 +20478,21 @@
19134
20478
  {
19135
20479
  "kind": "method",
19136
20480
  "name": "scrollToStart",
19137
- "description": "Scrolls to the top (left)."
20481
+ "description": "Scrolls to the start: the top, or the left when horizontal (the right right to left)."
19138
20482
  },
19139
20483
  {
19140
20484
  "kind": "method",
19141
20485
  "name": "scrollToEnd",
19142
- "description": "Scrolls to the bottom (right when horizontal)."
20486
+ "description": "Scrolls to the end: the bottom, or the right when horizontal (the left right to left)."
19143
20487
  }
19144
20488
  ],
19145
20489
  "events": [
19146
20490
  {
19147
20491
  "name": "ray-reach-end",
19148
20492
  "type": {
19149
- "text": "CustomEvent<{ edge: \"bottom\" | \"right\" }>"
20493
+ "text": "CustomEvent<{ edge: \"bottom\" | \"right\" | \"left\" }>"
19150
20494
  },
19151
- "description": "The end came within threshold (once per arrival)."
20495
+ "description": "The end came within threshold (once per arrival): the bottom, or the right when horizontal (the left right to left)."
19152
20496
  }
19153
20497
  ],
19154
20498
  "slots": [
@@ -19222,9 +20566,9 @@
19222
20566
  {
19223
20567
  "name": "label-position",
19224
20568
  "type": {
19225
- "text": "\"left\" | \"center\" | \"right\""
20569
+ "text": "\"start\" | \"center\" | \"end\" | \"left\" | \"right\""
19226
20570
  },
19227
- "description": "Where the label sits.",
20571
+ "description": "Where the label sits: start/end follow the writing direction; left/right are sides of the screen.",
19228
20572
  "fieldName": "labelPosition",
19229
20573
  "default": "center"
19230
20574
  },
@@ -19273,9 +20617,9 @@
19273
20617
  "kind": "field",
19274
20618
  "name": "labelPosition",
19275
20619
  "type": {
19276
- "text": "\"left\" | \"center\" | \"right\""
20620
+ "text": "\"start\" | \"center\" | \"end\" | \"left\" | \"right\""
19277
20621
  },
19278
- "description": "Where the label sits.",
20622
+ "description": "Where the label sits: start/end follow the writing direction; left/right are sides of the screen.",
19279
20623
  "attribute": "label-position",
19280
20624
  "reflects": true,
19281
20625
  "default": "center"
@@ -19406,7 +20750,7 @@
19406
20750
  "type": {
19407
20751
  "text": "string"
19408
20752
  },
19409
- "description": "A key: the size is saved in localStorage and restored.",
20753
+ "description": "A key: the size and the collapsed state are saved in localStorage and restored (a saved state wins over the collapsed attribute).",
19410
20754
  "fieldName": "autosave"
19411
20755
  }
19412
20756
  ],
@@ -19480,7 +20824,7 @@
19480
20824
  "type": {
19481
20825
  "text": "string"
19482
20826
  },
19483
- "description": "A key: the size is saved in localStorage and restored.",
20827
+ "description": "A key: the size and the collapsed state are saved in localStorage and restored (a saved state wins over the collapsed attribute).",
19484
20828
  "attribute": "autosave",
19485
20829
  "reflects": false
19486
20830
  },