@threadlabs/looma 0.28.10 → 0.28.12

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 (37) hide show
  1. package/components/ui-editor-chip-editor/ui-editor-chip-editor.html +32 -0
  2. package/components/ui-editor-chip-editor/ui-editor-chip-editor.js +33 -0
  3. package/components/ui-radio-group/ui-radio-group.html +13 -1
  4. package/components/ui-swatch/ui-swatch.html +69 -0
  5. package/dist/index.js +38 -37
  6. package/editor/block-actions.d.ts +9 -0
  7. package/editor/extensions/table-commands.d.ts +7 -1
  8. package/package.json +1 -1
  9. package/styles/ui-editor-chip-editor.css +1 -0
  10. package/styles/ui-radio-group.css +9 -0
  11. package/styles/ui-swatch.css +76 -0
  12. package/vanilla/UiEditorChipEditor.d.ts +18 -0
  13. package/vanilla/UiEditorChipEditor.js +45 -0
  14. package/vanilla/UiRadioGroup.d.ts +1 -0
  15. package/vanilla/UiRadioGroup.js +18 -13
  16. package/vanilla/UiSwatch.d.ts +14 -0
  17. package/vanilla/UiSwatch.js +54 -0
  18. package/vanilla/index.js +2 -0
  19. package/vue/UiEditorChipEditor.d.ts +45 -0
  20. package/vue/UiEditorChipEditor.js +2 -0
  21. package/vue/UiEditorChipEditor.vue +163 -0
  22. package/vue/UiRadioGroup.d.ts +9 -0
  23. package/vue/UiRadioGroup.vue +44 -2
  24. package/vue/UiSwatch.d.ts +16 -0
  25. package/vue/UiSwatch.js +2 -0
  26. package/vue/UiSwatch.vue +150 -0
  27. package/vue/chunks/UiEditorChipEditor.js +157 -0
  28. package/vue/chunks/UiEditorImageToolbar.js +2 -2
  29. package/vue/chunks/UiEditorLinkCard.js +1 -1
  30. package/vue/chunks/UiEditorLinkForm.js +2 -2
  31. package/vue/chunks/UiRadioGroup.js +26 -3
  32. package/vue/chunks/UiSwatch.js +78 -0
  33. package/vue/components.css +461 -443
  34. package/vue/editor/index.js +148 -105
  35. package/vue/editor/primitives.d.ts +9 -1
  36. package/vue/index.d.ts +2 -0
  37. package/vue/index.js +6 -4
@@ -3824,6 +3824,404 @@ footer[data-v-de6bc526]:empty {
3824
3824
  }
3825
3825
  }
3826
3826
 
3827
+ /* This component's hooks style the element they are set on, and never a nested one. An Input
3828
+ Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
3829
+ @property --ui-input-border {
3830
+ syntax: "*";
3831
+ inherits: false;
3832
+ }
3833
+ @property --ui-input-border-hover {
3834
+ syntax: "*";
3835
+ inherits: false;
3836
+ }
3837
+ @property --ui-input-border-width {
3838
+ syntax: "*";
3839
+ inherits: false;
3840
+ }
3841
+ @property --ui-input-focus-border {
3842
+ syntax: "*";
3843
+ inherits: false;
3844
+ }
3845
+ @property --ui-input-focus-outline {
3846
+ syntax: "*";
3847
+ inherits: false;
3848
+ }
3849
+ @property --ui-input-focus-shadow {
3850
+ syntax: "*";
3851
+ inherits: false;
3852
+ }
3853
+ @property --ui-input-inline-size {
3854
+ syntax: "*";
3855
+ inherits: false;
3856
+ }
3857
+ @property --ui-input-invalid-border {
3858
+ syntax: "*";
3859
+ inherits: false;
3860
+ }
3861
+ @property --ui-input-invalid-focus-shadow {
3862
+ syntax: "*";
3863
+ inherits: false;
3864
+ }
3865
+ @property --ui-input-min-block-size {
3866
+ syntax: "*";
3867
+ inherits: false;
3868
+ }
3869
+ @property --ui-input-radius {
3870
+ syntax: "*";
3871
+ inherits: false;
3872
+ }
3873
+ @property --ui-input-shadow {
3874
+ syntax: "*";
3875
+ inherits: false;
3876
+ }
3877
+ @property --ui-input-surface {
3878
+ syntax: "*";
3879
+ inherits: false;
3880
+ }
3881
+
3882
+ /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
3883
+
3884
+ /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
3885
+ body-size text: below 16px, iOS zooms the page into the focused field. */
3886
+
3887
+ /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
3888
+
3889
+ /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
3890
+
3891
+ /* Forced colors drop box shadows, so the focus ring becomes an outline. */
3892
+
3893
+ /* No text-box-trim here: trimming a native input's line box below its line height lets the text
3894
+ * scroll vertically inside the field. Native inputs already center their single line. */
3895
+
3896
+ /* A component that sets its display still honours the hidden attribute on its root. */
3897
+ @scope (.ui-input) {
3898
+ :scope:where([data-v-a8c06d86]:scope) {
3899
+ box-sizing: border-box;
3900
+ display: inline-block;
3901
+ inline-size: var(--ui-input-inline-size, 100%);
3902
+ min-inline-size: 0;
3903
+ min-block-size: var(
3904
+ --ui-input-min-block-size,
3905
+ var(--_ui-default-input-min-block-size, var(--ui-control-size-md))
3906
+ );
3907
+ margin: 0;
3908
+ padding: var(--ui-space-2) var(--ui-space-3);
3909
+ appearance: none;
3910
+ padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
3911
+ border: var(
3912
+ --ui-input-border-width,
3913
+ var(--_ui-default-input-border-width, var(--ui-border-width))
3914
+ ) solid
3915
+ var(
3916
+ --ui-input-border,
3917
+ var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong)))
3918
+ );
3919
+ border-radius: var(
3920
+ --ui-input-radius,
3921
+ var(--_ui-default-input-radius, var(--ui-field-radius, var(--ui-radius-md)))
3922
+ );
3923
+ background: var(
3924
+ --ui-input-surface,
3925
+ var(--_ui-default-input-surface, var(--ui-control-surface, var(--ui-surface-elevated)))
3926
+ );
3927
+ color: var(--ui-text-primary);
3928
+ font: inherit;
3929
+ line-height: var(--ui-line-height-tight);
3930
+ box-shadow: var(--ui-input-shadow, var(--_ui-default-input-shadow, var(--ui-control-inset)));
3931
+ transition:
3932
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
3933
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
3934
+ background-color var(--ui-motion-fast) var(--ui-motion-ease);
3935
+ }
3936
+ :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=sm"]) {
3937
+ min-block-size: var(
3938
+ --ui-input-min-block-size,
3939
+ var(--_ui-default-input-min-block-size, var(--ui-control-size-sm))
3940
+ );
3941
+ padding: var(--ui-space-1) var(--ui-space-2);
3942
+ font-size: var(--ui-font-size-sm);
3943
+ }
3944
+ :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=lg"]) {
3945
+ min-block-size: var(
3946
+ --ui-input-min-block-size,
3947
+ var(--_ui-default-input-min-block-size, var(--ui-control-size-lg))
3948
+ );
3949
+ padding: var(--ui-space-3) var(--ui-space-4);
3950
+ font-size: var(--ui-font-size-md);
3951
+ }
3952
+ @media (pointer: coarse) {
3953
+ :scope:where([data-v-a8c06d86]:scope) {
3954
+ min-block-size: var(
3955
+ --ui-input-min-block-size,
3956
+ var(
3957
+ --_ui-default-input-min-block-size,
3958
+ max(var(--ui-control-size-md), var(--ui-control-min-block-size))
3959
+ )
3960
+ );
3961
+ }
3962
+ :scope:where([data-v-a8c06d86]:scope),
3963
+ :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=sm"]),
3964
+ :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=lg"]) {
3965
+ font-size: var(--ui-font-size-md);
3966
+ }
3967
+ :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=sm"]) {
3968
+ min-block-size: var(
3969
+ --ui-input-min-block-size,
3970
+ var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size))
3971
+ );
3972
+ }
3973
+ }
3974
+ :scope:where([data-v-a8c06d86]:scope)::selection {
3975
+ background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
3976
+ color: inherit;
3977
+ }
3978
+ :scope:where([data-v-a8c06d86]:scope)::placeholder {
3979
+ color: var(--ui-control-placeholder, var(--ui-text-secondary));
3980
+ opacity: 1;
3981
+ }
3982
+ :scope:where([data-v-a8c06d86]:scope):is(:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid]))) {
3983
+ border-color: var(
3984
+ --ui-input-border-hover,
3985
+ var(
3986
+ --_ui-default-input-border-hover,
3987
+ var(--ui-control-border-hover, var(--ui-text-secondary))
3988
+ )
3989
+ );
3990
+ }
3991
+ :scope:where([data-v-a8c06d86]:scope):is(:focus-visible) {
3992
+ border-color: var(
3993
+ --ui-input-focus-border,
3994
+ var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid)))
3995
+ );
3996
+ outline: none;
3997
+ box-shadow: var(
3998
+ --ui-input-focus-shadow,
3999
+ var(
4000
+ --_ui-default-input-focus-shadow,
4001
+ var(--ui-control-inset),
4002
+ var(--ui-control-focus-halo-shadow)
4003
+ )
4004
+ );
4005
+ }
4006
+ :scope:where([data-v-a8c06d86]:scope):is([aria-invalid="true"]),
4007
+ :scope:where([data-v-a8c06d86]:scope):is(:is(:user-invalid, [data-user-invalid])) {
4008
+ border-color: var(
4009
+ --ui-input-invalid-border,
4010
+ var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)))
4011
+ );
4012
+ }
4013
+ :scope:where([data-v-a8c06d86]:scope):is(:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
4014
+ box-shadow: var(
4015
+ --ui-input-invalid-focus-shadow,
4016
+ var(
4017
+ --_ui-default-input-invalid-focus-shadow,
4018
+ var(--ui-control-inset),
4019
+ 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
4020
+ in srgb,
4021
+ var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
4022
+ transparent
4023
+ )
4024
+ )
4025
+ );
4026
+ }
4027
+ :scope:where([data-v-a8c06d86]:scope):is(:disabled) {
4028
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
4029
+ color: var(--ui-disabled-text);
4030
+ box-shadow: none;
4031
+ cursor: not-allowed;
4032
+ }
4033
+ @media (forced-colors: active) {
4034
+ :scope:where([data-v-a8c06d86]:scope):is(:focus-visible) {
4035
+ outline: var(
4036
+ --ui-input-focus-outline,
4037
+ var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight)
4038
+ );
4039
+ outline-offset: var(--ui-border-width);
4040
+ }
4041
+ }
4042
+ :scope:where([data-v-a8c06d86]:scope):is([hidden]) {
4043
+ display: none;
4044
+ }
4045
+ }
4046
+
4047
+ @property --ui-radio-group-invalid-text {
4048
+ syntax: "*";
4049
+ inherits: false;
4050
+ }
4051
+
4052
+ /* A component that sets its display still honours the hidden attribute on its root. */
4053
+ @scope (.ui-radio-group) {
4054
+ :scope:where([data-v-b26d4760]:scope) {
4055
+ --_ui-radio-group-invalid-text: var(
4056
+ --ui-radio-group-invalid-text,
4057
+ var(--ui-field-danger, var(--ui-danger-solid))
4058
+ );
4059
+ display: inline-flex;
4060
+ align-items: center;
4061
+ gap: var(--ui-space-2);
4062
+ min-inline-size: 0;
4063
+ margin: 0;
4064
+ padding: 0;
4065
+ border: 0;
4066
+ }
4067
+ legend[data-v-b26d4760] {
4068
+ float: inline-start;
4069
+ inline-size: 100%;
4070
+ margin: 0 0 var(--ui-space-2);
4071
+ padding: 0;
4072
+ color: var(--ui-text-primary);
4073
+ font-weight: var(--ui-font-medium);
4074
+ }
4075
+ legend[data-v-b26d4760] + * {
4076
+ clear: both;
4077
+ }
4078
+ legend.sr-only[data-v-b26d4760] {
4079
+ position: absolute;
4080
+ inline-size: 1px;
4081
+ block-size: 1px;
4082
+ overflow: hidden;
4083
+ clip-path: inset(50%);
4084
+ white-space: nowrap;
4085
+ }
4086
+ :scope[data-ui-radio-group-state~="invalid"] legend[data-v-b26d4760] {
4087
+ color: var(--_ui-radio-group-invalid-text);
4088
+ }
4089
+ :scope:where([data-v-b26d4760]:scope):is([data-ui-radio-group-state~="orientation=vertical"]) {
4090
+ display: inline-grid;
4091
+ justify-items: start;
4092
+ }
4093
+ :scope:where([data-v-b26d4760]:scope):is([hidden]) {
4094
+ display: none;
4095
+ }
4096
+ }
4097
+
4098
+ /* This component's hooks style the element they are set on, and never a nested one. */
4099
+ @property --ui-stack-height {
4100
+ syntax: "*";
4101
+ inherits: false;
4102
+ }
4103
+ @property --ui-stack-gap {
4104
+ syntax: "*";
4105
+ inherits: false;
4106
+ }
4107
+
4108
+ /* A component that sets its display still honours the hidden attribute on its root. */
4109
+ @scope (.ui-stack) {
4110
+ :scope:where([data-v-12a17b88]:scope) {
4111
+ --_layout-gap: var(--ui-space-4);
4112
+ display: flex;
4113
+ flex-direction: column;
4114
+ align-items: stretch;
4115
+ gap: var(--ui-stack-gap, var(--_layout-gap));
4116
+ min-inline-size: 0;
4117
+ max-inline-size: 100%;
4118
+ margin: 0;
4119
+ }
4120
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="fill"]) {
4121
+ flex: 1;
4122
+ min-block-size: 0;
4123
+ }
4124
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="height"]) {
4125
+ block-size: calc(var(--ui-stack-height, 0) * 1px);
4126
+ min-block-size: 0;
4127
+ }
4128
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=none"]) {
4129
+ --_layout-gap: 0px;
4130
+ }
4131
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=xs"]) {
4132
+ --_layout-gap: var(--ui-space-2);
4133
+ }
4134
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=s"]) {
4135
+ --_layout-gap: var(--ui-space-3);
4136
+ }
4137
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=m"]) {
4138
+ --_layout-gap: var(--ui-space-4);
4139
+ }
4140
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=l"]) {
4141
+ --_layout-gap: var(--ui-space-5);
4142
+ }
4143
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=xl"]) {
4144
+ --_layout-gap: var(--ui-space-6);
4145
+ }
4146
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="align=start"]) {
4147
+ align-items: flex-start;
4148
+ }
4149
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="align=center"]) {
4150
+ align-items: center;
4151
+ }
4152
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="align=end"]) {
4153
+ align-items: flex-end;
4154
+ }
4155
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="justify=center"]) {
4156
+ justify-content: center;
4157
+ }
4158
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="justify=end"]) {
4159
+ justify-content: flex-end;
4160
+ }
4161
+ :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="justify=between"]) {
4162
+ justify-content: space-between;
4163
+ }
4164
+ :scope:where([data-v-12a17b88]:scope):is([hidden]) {
4165
+ display: none;
4166
+ }
4167
+ }
4168
+
4169
+ @property --ui-swatch-size {
4170
+ syntax: "*";
4171
+ inherits: false;
4172
+ }
4173
+
4174
+ /* A native radio drawn as a round dot. Inside a ui-radio-group the group names it, applies its
4175
+ value, and moves between swatches with the arrow keys. */
4176
+
4177
+ /* The chosen swatch and the focused one share one ring at the focus width (2px by default), in
4178
+ the tone or the focus colour. */
4179
+ @scope (.ui-swatch) {
4180
+ :scope:where([data-v-42e76006]:scope) {
4181
+ --_surface: var(--ui-surface-subtle);
4182
+ --_text: var(--ui-text-secondary);
4183
+
4184
+ appearance: none;
4185
+ box-sizing: border-box;
4186
+ flex: 0 0 auto;
4187
+ inline-size: var(--ui-swatch-size, 1.65rem);
4188
+ block-size: var(--ui-swatch-size, 1.65rem);
4189
+ margin: 0;
4190
+ border: var(--ui-border-width) solid color-mix(in srgb, var(--_surface) 75%, var(--_text) 25%);
4191
+ border-radius: 50%;
4192
+ background: var(--_surface);
4193
+ cursor: pointer;
4194
+ }
4195
+ :scope:where([data-v-42e76006]:scope):is([data-ui-swatch-state~="tone=blue"]) {
4196
+ --_surface: var(--ui-info-soft);
4197
+ --_text: var(--ui-info-subtle-text);
4198
+ }
4199
+ :scope:where([data-v-42e76006]:scope):is([data-ui-swatch-state~="tone=green"]) {
4200
+ --_surface: var(--ui-success-soft);
4201
+ --_text: var(--ui-success-subtle-text);
4202
+ }
4203
+ :scope:where([data-v-42e76006]:scope):is([data-ui-swatch-state~="tone=yellow"]) {
4204
+ --_surface: var(--ui-warning-soft);
4205
+ --_text: var(--ui-warning-subtle-text);
4206
+ }
4207
+ :scope:where([data-v-42e76006]:scope):is([data-ui-swatch-state~="tone=red"]) {
4208
+ --_surface: var(--ui-danger-soft);
4209
+ --_text: var(--ui-danger-subtle-text);
4210
+ }
4211
+ :scope:where([data-v-42e76006]:scope):is([data-ui-swatch-state~="tone=purple"]) {
4212
+ --_surface: var(--ui-accent-soft);
4213
+ --_text: var(--ui-accent-subtle-text);
4214
+ }
4215
+ :scope:where([data-v-42e76006]:scope):is(:checked) {
4216
+ outline: var(--ui-focus-width) solid var(--_text);
4217
+ outline-offset: var(--ui-focus-width);
4218
+ }
4219
+ :scope:where([data-v-42e76006]:scope):is(:focus-visible) {
4220
+ outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
4221
+ outline-offset: var(--ui-focus-width);
4222
+ }
4223
+ }
4224
+
3827
4225
  /* One row, always. When the controls outgrow the space, the row scrolls sideways rather than
3828
4226
  wrapping into several lines, and a fade at each edge that has more to show says so. */
3829
4227
 
@@ -4437,298 +4835,78 @@ footer[data-v-de6bc526]:empty {
4437
4835
  }
4438
4836
  :is(:scope[data-ui-icon-button-state~="loading"], :scope[data-ui-icon-button-state~="pending"])
4439
4837
  .content[data-v-4a58a364] {
4440
- display: none;
4441
- }
4442
- @media (prefers-reduced-motion: reduce) {
4443
- :scope[data-ui-icon-button-state~="anticipatory"] .content[data-v-4a58a364] {
4444
- transition: none;
4445
- }
4446
- }
4447
- :scope:where([data-v-4a58a364]:scope):is(:focus-visible) {
4448
- outline: none;
4449
- box-shadow: var(--ui-focus-halo);
4450
- }
4451
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"]:focus-visible) {
4452
- box-shadow:
4453
- var(--ui-action-shadow, var(--_ui-action-shadow)),
4454
- var(--ui-focus-halo);
4455
- }
4456
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=solid"]:focus-visible) {
4457
- box-shadow:
4458
- var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
4459
- var(--ui-focus-halo);
4460
- }
4461
- :scope:where([data-v-4a58a364]:scope):is(:is(:scope[data-ui-icon-button-state~="variant=outline"], :scope[data-ui-icon-button-state~="variant=solid"]):active:enabled:not([aria-disabled="true"])) {
4462
- background-image: none;
4463
- box-shadow: var(--ui-pressed);
4464
- }
4465
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible) {
4466
- box-shadow:
4467
- var(--ui-pressed),
4468
- var(--ui-focus-halo);
4469
- }
4470
- @media (forced-colors: active) {
4471
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled) {
4472
- outline: var(--ui-focus-width) solid Highlight;
4473
- outline-offset: calc(-2 * var(--ui-focus-width));
4474
- }
4475
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible) {
4476
- outline-offset: var(--ui-focus-width);
4477
- }
4478
- }
4479
- :scope:where([data-v-4a58a364]:scope):is(:disabled) {
4480
- border-color: var(--ui-disabled-border);
4481
- background-color: var(--ui-disabled-surface);
4482
- color: var(--ui-disabled-text);
4483
- filter: var(--ui-icon-button-disabled-filter, var(--ui-disabled-filter));
4484
- opacity: var(--ui-icon-button-disabled-opacity, 1);
4485
- cursor: not-allowed;
4486
- box-shadow: none;
4487
- background-image: none;
4488
- }
4489
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=ghost"]:disabled) {
4490
- border-color: transparent;
4491
- }
4492
- :scope:where([data-v-4a58a364]:scope) {
4493
- --_icon-button-icon-default: var(--ui-icon-size-md);
4494
- /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
4495
- defaults, which its own --ui-icon-* hooks still override. */
4496
- --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4497
- --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
4498
- }
4499
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="size=sm"]) {
4500
- --_icon-button-icon-default: var(--ui-icon-size-sm);
4501
- }
4502
- :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="size=lg"]) {
4503
- --_icon-button-icon-default: var(--ui-icon-size-lg);
4504
- }
4505
- svg[data-v-4a58a364-s] {
4506
- inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4507
- block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4508
- flex-shrink: 0;
4509
- stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
4510
- }
4511
- :scope:where([data-v-4a58a364]:scope):is([hidden]) {
4512
- display: none;
4513
- }
4514
- }
4515
-
4516
- /* This component's hooks style the element they are set on, and never a nested one. An Input
4517
- Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
4518
- @property --ui-input-border {
4519
- syntax: "*";
4520
- inherits: false;
4521
- }
4522
- @property --ui-input-border-hover {
4523
- syntax: "*";
4524
- inherits: false;
4525
- }
4526
- @property --ui-input-border-width {
4527
- syntax: "*";
4528
- inherits: false;
4529
- }
4530
- @property --ui-input-focus-border {
4531
- syntax: "*";
4532
- inherits: false;
4533
- }
4534
- @property --ui-input-focus-outline {
4535
- syntax: "*";
4536
- inherits: false;
4537
- }
4538
- @property --ui-input-focus-shadow {
4539
- syntax: "*";
4540
- inherits: false;
4541
- }
4542
- @property --ui-input-inline-size {
4543
- syntax: "*";
4544
- inherits: false;
4545
- }
4546
- @property --ui-input-invalid-border {
4547
- syntax: "*";
4548
- inherits: false;
4549
- }
4550
- @property --ui-input-invalid-focus-shadow {
4551
- syntax: "*";
4552
- inherits: false;
4553
- }
4554
- @property --ui-input-min-block-size {
4555
- syntax: "*";
4556
- inherits: false;
4557
- }
4558
- @property --ui-input-radius {
4559
- syntax: "*";
4560
- inherits: false;
4561
- }
4562
- @property --ui-input-shadow {
4563
- syntax: "*";
4564
- inherits: false;
4565
- }
4566
- @property --ui-input-surface {
4567
- syntax: "*";
4568
- inherits: false;
4569
- }
4570
-
4571
- /* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
4572
-
4573
- /* Under touch a small field is still a touch-sized target, as a small button is, and keeps
4574
- body-size text: below 16px, iOS zooms the page into the focused field. */
4575
-
4576
- /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
4577
-
4578
- /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
4579
-
4580
- /* Forced colors drop box shadows, so the focus ring becomes an outline. */
4581
-
4582
- /* No text-box-trim here: trimming a native input's line box below its line height lets the text
4583
- * scroll vertically inside the field. Native inputs already center their single line. */
4584
-
4585
- /* A component that sets its display still honours the hidden attribute on its root. */
4586
- @scope (.ui-input) {
4587
- :scope:where([data-v-a8c06d86]:scope) {
4588
- box-sizing: border-box;
4589
- display: inline-block;
4590
- inline-size: var(--ui-input-inline-size, 100%);
4591
- min-inline-size: 0;
4592
- min-block-size: var(
4593
- --ui-input-min-block-size,
4594
- var(--_ui-default-input-min-block-size, var(--ui-control-size-md))
4595
- );
4596
- margin: 0;
4597
- padding: var(--ui-space-2) var(--ui-space-3);
4598
- appearance: none;
4599
- padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
4600
- border: var(
4601
- --ui-input-border-width,
4602
- var(--_ui-default-input-border-width, var(--ui-border-width))
4603
- ) solid
4604
- var(
4605
- --ui-input-border,
4606
- var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong)))
4607
- );
4608
- border-radius: var(
4609
- --ui-input-radius,
4610
- var(--_ui-default-input-radius, var(--ui-field-radius, var(--ui-radius-md)))
4611
- );
4612
- background: var(
4613
- --ui-input-surface,
4614
- var(--_ui-default-input-surface, var(--ui-control-surface, var(--ui-surface-elevated)))
4615
- );
4616
- color: var(--ui-text-primary);
4617
- font: inherit;
4618
- line-height: var(--ui-line-height-tight);
4619
- box-shadow: var(--ui-input-shadow, var(--_ui-default-input-shadow, var(--ui-control-inset)));
4620
- transition:
4621
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
4622
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
4623
- background-color var(--ui-motion-fast) var(--ui-motion-ease);
4624
- }
4625
- :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=sm"]) {
4626
- min-block-size: var(
4627
- --ui-input-min-block-size,
4628
- var(--_ui-default-input-min-block-size, var(--ui-control-size-sm))
4629
- );
4630
- padding: var(--ui-space-1) var(--ui-space-2);
4631
- font-size: var(--ui-font-size-sm);
4632
- }
4633
- :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=lg"]) {
4634
- min-block-size: var(
4635
- --ui-input-min-block-size,
4636
- var(--_ui-default-input-min-block-size, var(--ui-control-size-lg))
4637
- );
4638
- padding: var(--ui-space-3) var(--ui-space-4);
4639
- font-size: var(--ui-font-size-md);
4640
- }
4641
- @media (pointer: coarse) {
4642
- :scope:where([data-v-a8c06d86]:scope) {
4643
- min-block-size: var(
4644
- --ui-input-min-block-size,
4645
- var(
4646
- --_ui-default-input-min-block-size,
4647
- max(var(--ui-control-size-md), var(--ui-control-min-block-size))
4648
- )
4649
- );
4838
+ display: none;
4650
4839
  }
4651
- :scope:where([data-v-a8c06d86]:scope),
4652
- :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=sm"]),
4653
- :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=lg"]) {
4654
- font-size: var(--ui-font-size-md);
4840
+ @media (prefers-reduced-motion: reduce) {
4841
+ :scope[data-ui-icon-button-state~="anticipatory"] .content[data-v-4a58a364] {
4842
+ transition: none;
4655
4843
  }
4656
- :scope:where([data-v-a8c06d86]:scope):is([data-ui-input-state~="size=sm"]) {
4657
- min-block-size: var(
4658
- --ui-input-min-block-size,
4659
- var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size))
4660
- );
4661
4844
  }
4845
+ :scope:where([data-v-4a58a364]:scope):is(:focus-visible) {
4846
+ outline: none;
4847
+ box-shadow: var(--ui-focus-halo);
4662
4848
  }
4663
- :scope:where([data-v-a8c06d86]:scope)::selection {
4664
- background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
4665
- color: inherit;
4849
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"]:focus-visible) {
4850
+ box-shadow:
4851
+ var(--ui-action-shadow, var(--_ui-action-shadow)),
4852
+ var(--ui-focus-halo);
4666
4853
  }
4667
- :scope:where([data-v-a8c06d86]:scope)::placeholder {
4668
- color: var(--ui-control-placeholder, var(--ui-text-secondary));
4669
- opacity: 1;
4854
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=solid"]:focus-visible) {
4855
+ box-shadow:
4856
+ var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
4857
+ var(--ui-focus-halo);
4670
4858
  }
4671
- :scope:where([data-v-a8c06d86]:scope):is(:hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid]))) {
4672
- border-color: var(
4673
- --ui-input-border-hover,
4674
- var(
4675
- --_ui-default-input-border-hover,
4676
- var(--ui-control-border-hover, var(--ui-text-secondary))
4677
- )
4678
- );
4859
+ :scope:where([data-v-4a58a364]:scope):is(:is(:scope[data-ui-icon-button-state~="variant=outline"], :scope[data-ui-icon-button-state~="variant=solid"]):active:enabled:not([aria-disabled="true"])) {
4860
+ background-image: none;
4861
+ box-shadow: var(--ui-pressed);
4679
4862
  }
4680
- :scope:where([data-v-a8c06d86]:scope):is(:focus-visible) {
4681
- border-color: var(
4682
- --ui-input-focus-border,
4683
- var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid)))
4684
- );
4685
- outline: none;
4686
- box-shadow: var(
4687
- --ui-input-focus-shadow,
4688
- var(
4689
- --_ui-default-input-focus-shadow,
4690
- var(--ui-control-inset),
4691
- var(--ui-control-focus-halo-shadow)
4692
- )
4693
- );
4863
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible) {
4864
+ box-shadow:
4865
+ var(--ui-pressed),
4866
+ var(--ui-focus-halo);
4694
4867
  }
4695
- :scope:where([data-v-a8c06d86]:scope):is([aria-invalid="true"]),
4696
- :scope:where([data-v-a8c06d86]:scope):is(:is(:user-invalid, [data-user-invalid])) {
4697
- border-color: var(
4698
- --ui-input-invalid-border,
4699
- var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)))
4700
- );
4868
+ @media (forced-colors: active) {
4869
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled) {
4870
+ outline: var(--ui-focus-width) solid Highlight;
4871
+ outline-offset: calc(-2 * var(--ui-focus-width));
4701
4872
  }
4702
- :scope:where([data-v-a8c06d86]:scope):is(:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible) {
4703
- box-shadow: var(
4704
- --ui-input-invalid-focus-shadow,
4705
- var(
4706
- --_ui-default-input-invalid-focus-shadow,
4707
- var(--ui-control-inset),
4708
- 0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
4709
- in srgb,
4710
- var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
4711
- transparent
4712
- )
4713
- )
4714
- );
4873
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible) {
4874
+ outline-offset: var(--ui-focus-width);
4715
4875
  }
4716
- :scope:where([data-v-a8c06d86]:scope):is(:disabled) {
4717
- background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
4876
+ }
4877
+ :scope:where([data-v-4a58a364]:scope):is(:disabled) {
4878
+ border-color: var(--ui-disabled-border);
4879
+ background-color: var(--ui-disabled-surface);
4718
4880
  color: var(--ui-disabled-text);
4719
- box-shadow: none;
4881
+ filter: var(--ui-icon-button-disabled-filter, var(--ui-disabled-filter));
4882
+ opacity: var(--ui-icon-button-disabled-opacity, 1);
4720
4883
  cursor: not-allowed;
4884
+ box-shadow: none;
4885
+ background-image: none;
4721
4886
  }
4722
- @media (forced-colors: active) {
4723
- :scope:where([data-v-a8c06d86]:scope):is(:focus-visible) {
4724
- outline: var(
4725
- --ui-input-focus-outline,
4726
- var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight)
4727
- );
4728
- outline-offset: var(--ui-border-width);
4887
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="variant=ghost"]:disabled) {
4888
+ border-color: transparent;
4729
4889
  }
4890
+ :scope:where([data-v-4a58a364]:scope) {
4891
+ --_icon-button-icon-default: var(--ui-icon-size-md);
4892
+ /* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
4893
+ defaults, which its own --ui-icon-* hooks still override. */
4894
+ --_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4895
+ --_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
4730
4896
  }
4731
- :scope:where([data-v-a8c06d86]:scope):is([hidden]) {
4897
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="size=sm"]) {
4898
+ --_icon-button-icon-default: var(--ui-icon-size-sm);
4899
+ }
4900
+ :scope:where([data-v-4a58a364]:scope):is([data-ui-icon-button-state~="size=lg"]) {
4901
+ --_icon-button-icon-default: var(--ui-icon-size-lg);
4902
+ }
4903
+ svg[data-v-4a58a364-s] {
4904
+ inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4905
+ block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
4906
+ flex-shrink: 0;
4907
+ stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
4908
+ }
4909
+ :scope:where([data-v-4a58a364]:scope):is([hidden]) {
4732
4910
  display: none;
4733
4911
  }
4734
4912
  }
@@ -4845,77 +5023,6 @@ svg[data-v-4a58a364-s] {
4845
5023
  }
4846
5024
  }
4847
5025
 
4848
- /* This component's hooks style the element they are set on, and never a nested one. */
4849
- @property --ui-stack-height {
4850
- syntax: "*";
4851
- inherits: false;
4852
- }
4853
- @property --ui-stack-gap {
4854
- syntax: "*";
4855
- inherits: false;
4856
- }
4857
-
4858
- /* A component that sets its display still honours the hidden attribute on its root. */
4859
- @scope (.ui-stack) {
4860
- :scope:where([data-v-12a17b88]:scope) {
4861
- --_layout-gap: var(--ui-space-4);
4862
- display: flex;
4863
- flex-direction: column;
4864
- align-items: stretch;
4865
- gap: var(--ui-stack-gap, var(--_layout-gap));
4866
- min-inline-size: 0;
4867
- max-inline-size: 100%;
4868
- margin: 0;
4869
- }
4870
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="fill"]) {
4871
- flex: 1;
4872
- min-block-size: 0;
4873
- }
4874
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="height"]) {
4875
- block-size: calc(var(--ui-stack-height, 0) * 1px);
4876
- min-block-size: 0;
4877
- }
4878
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=none"]) {
4879
- --_layout-gap: 0px;
4880
- }
4881
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=xs"]) {
4882
- --_layout-gap: var(--ui-space-2);
4883
- }
4884
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=s"]) {
4885
- --_layout-gap: var(--ui-space-3);
4886
- }
4887
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=m"]) {
4888
- --_layout-gap: var(--ui-space-4);
4889
- }
4890
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=l"]) {
4891
- --_layout-gap: var(--ui-space-5);
4892
- }
4893
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="gap=xl"]) {
4894
- --_layout-gap: var(--ui-space-6);
4895
- }
4896
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="align=start"]) {
4897
- align-items: flex-start;
4898
- }
4899
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="align=center"]) {
4900
- align-items: center;
4901
- }
4902
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="align=end"]) {
4903
- align-items: flex-end;
4904
- }
4905
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="justify=center"]) {
4906
- justify-content: center;
4907
- }
4908
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="justify=end"]) {
4909
- justify-content: flex-end;
4910
- }
4911
- :scope:where([data-v-12a17b88]:scope):is([data-ui-stack-state~="justify=between"]) {
4912
- justify-content: space-between;
4913
- }
4914
- :scope:where([data-v-12a17b88]:scope):is([hidden]) {
4915
- display: none;
4916
- }
4917
- }
4918
-
4919
5026
  /* Running text, set on the type scale and in a tone that says what it is, so a view never styles
4920
5027
  text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
4921
5028
  heading. */
@@ -7664,49 +7771,6 @@ input[data-v-502a1e4a]:focus-visible {
7664
7771
  }
7665
7772
  }
7666
7773
 
7667
- @property --ui-radio-group-invalid-text {
7668
- syntax: "*";
7669
- inherits: false;
7670
- }
7671
-
7672
- /* A component that sets its display still honours the hidden attribute on its root. */
7673
- @scope (.ui-radio-group) {
7674
- :scope:where([data-v-49ebfb5d]:scope) {
7675
- --_ui-radio-group-invalid-text: var(
7676
- --ui-radio-group-invalid-text,
7677
- var(--ui-field-danger, var(--ui-danger-solid))
7678
- );
7679
- display: inline-flex;
7680
- align-items: center;
7681
- gap: var(--ui-space-2);
7682
- min-inline-size: 0;
7683
- margin: 0;
7684
- padding: 0;
7685
- border: 0;
7686
- }
7687
- legend[data-v-49ebfb5d] {
7688
- float: inline-start;
7689
- inline-size: 100%;
7690
- margin: 0 0 var(--ui-space-2);
7691
- padding: 0;
7692
- color: var(--ui-text-primary);
7693
- font-weight: var(--ui-font-medium);
7694
- }
7695
- legend[data-v-49ebfb5d] + * {
7696
- clear: both;
7697
- }
7698
- :scope[data-ui-radio-group-state~="invalid"] legend[data-v-49ebfb5d] {
7699
- color: var(--_ui-radio-group-invalid-text);
7700
- }
7701
- :scope:where([data-v-49ebfb5d]:scope):is([data-ui-radio-group-state~="orientation=vertical"]) {
7702
- display: inline-grid;
7703
- justify-items: start;
7704
- }
7705
- :scope:where([data-v-49ebfb5d]:scope):is([hidden]) {
7706
- display: none;
7707
- }
7708
- }
7709
-
7710
7774
  /* This component's hooks style the element they are set on, and never a nested one. */
7711
7775
  @property --ui-reel-gap {
7712
7776
  syntax: "*";
@@ -10644,46 +10708,6 @@ html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .r
10644
10708
  inline-size: min(15rem, calc(100vw - 2rem));
10645
10709
  }
10646
10710
 
10647
- .looma-editor__chip-form {
10648
- display: flex;
10649
- flex-direction: column;
10650
- gap: var(--ui-space-3);
10651
- }
10652
-
10653
- .looma-editor__chip-form input {
10654
- box-sizing: border-box;
10655
- width: 100%;
10656
- min-height: var(--ui-control-min-block-size);
10657
- padding: var(--ui-space-2);
10658
- border: var(--ui-border-width) solid var(--ui-control-border);
10659
- border-radius: var(--ui-field-radius, var(--ui-radius-md));
10660
- background: var(--ui-control-surface);
10661
- color: var(--ui-text-primary);
10662
- font: inherit;
10663
- }
10664
-
10665
- .looma-editor__chip-colors {
10666
- display: flex;
10667
- justify-content: space-between;
10668
- gap: var(--ui-space-1);
10669
- }
10670
-
10671
- .looma-editor__chip-color {
10672
- display: grid;
10673
- place-items: center;
10674
- width: 1.65rem;
10675
- height: 1.65rem;
10676
- padding: 0;
10677
- border: var(--ui-border-width) solid var(--_chip-border);
10678
- border-radius: 50%;
10679
- background: var(--_chip-surface);
10680
- color: var(--_chip-text);
10681
- font: inherit;
10682
- font-size: var(--ui-font-size-xs);
10683
- cursor: pointer;
10684
- }
10685
-
10686
- .looma-editor__chip-form :is(input, button):focus-visible,
10687
10711
  .looma-editor .ProseMirror [data-looma-chip]:focus-visible {
10688
10712
  outline: var(--ui-focus-width) solid var(--ui-focus-ring);
10689
10713
  outline-offset: var(--ui-focus-width);
@@ -10772,8 +10796,7 @@ html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .r
10772
10796
  white-space: nowrap;
10773
10797
  }
10774
10798
 
10775
- .looma-editor .ProseMirror [data-looma-chip],
10776
- .looma-editor__chip-color {
10799
+ .looma-editor .ProseMirror [data-looma-chip] {
10777
10800
  --_chip-tone-surface: var(--ui-surface-subtle);
10778
10801
  --_chip-tone-text: var(--ui-text-secondary);
10779
10802
  --_chip-surface: var(--ui-editor-chip-surface, var(--_chip-tone-surface));
@@ -10781,32 +10804,27 @@ html[data-ui-input-modality="touch"] :scope[data-selection-mode="multiple"] > .r
10781
10804
  --_chip-border: var(--ui-editor-chip-border, color-mix(in srgb, var(--_chip-surface) 75%, var(--_chip-text) 25%));
10782
10805
  }
10783
10806
 
10784
- .looma-editor .ProseMirror [data-looma-chip][data-color="blue"],
10785
- .looma-editor__chip-color[data-color="blue"] {
10807
+ .looma-editor .ProseMirror [data-looma-chip][data-color="blue"] {
10786
10808
  --_chip-tone-surface: var(--ui-info-soft);
10787
10809
  --_chip-tone-text: var(--ui-info-subtle-text);
10788
10810
  }
10789
10811
 
10790
- .looma-editor .ProseMirror [data-looma-chip][data-color="green"],
10791
- .looma-editor__chip-color[data-color="green"] {
10812
+ .looma-editor .ProseMirror [data-looma-chip][data-color="green"] {
10792
10813
  --_chip-tone-surface: var(--ui-success-soft);
10793
10814
  --_chip-tone-text: var(--ui-success-subtle-text);
10794
10815
  }
10795
10816
 
10796
- .looma-editor .ProseMirror [data-looma-chip][data-color="yellow"],
10797
- .looma-editor__chip-color[data-color="yellow"] {
10817
+ .looma-editor .ProseMirror [data-looma-chip][data-color="yellow"] {
10798
10818
  --_chip-tone-surface: var(--ui-warning-soft);
10799
10819
  --_chip-tone-text: var(--ui-warning-subtle-text);
10800
10820
  }
10801
10821
 
10802
- .looma-editor .ProseMirror [data-looma-chip][data-color="red"],
10803
- .looma-editor__chip-color[data-color="red"] {
10822
+ .looma-editor .ProseMirror [data-looma-chip][data-color="red"] {
10804
10823
  --_chip-tone-surface: var(--ui-danger-soft);
10805
10824
  --_chip-tone-text: var(--ui-danger-subtle-text);
10806
10825
  }
10807
10826
 
10808
- .looma-editor .ProseMirror [data-looma-chip][data-color="purple"],
10809
- .looma-editor__chip-color[data-color="purple"] {
10827
+ .looma-editor .ProseMirror [data-looma-chip][data-color="purple"] {
10810
10828
  --_chip-tone-surface: var(--ui-accent-soft);
10811
10829
  --_chip-tone-text: var(--ui-accent-subtle-text);
10812
10830
  }