@onetype/framework 2.0.53 → 2.0.54

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 (150) hide show
  1. package/addons/float/popup/css/popup.css +2 -2
  2. package/addons/render/directives/front/functions/process.js +3 -1
  3. package/addons/render/directives/front/items/self/160-slot.js +9 -1
  4. package/addons/render/editor/addon.js +13 -0
  5. package/addons/render/editor/functions/block/add.js +57 -0
  6. package/addons/render/editor/functions/block/delete.js +32 -0
  7. package/addons/render/editor/functions/block/find.js +30 -0
  8. package/addons/render/editor/functions/render/block.js +114 -0
  9. package/addons/render/editor/functions/render/blocks.js +31 -0
  10. package/addons/render/editor/items/elements/editor.js +69 -0
  11. package/addons/render/editor/items/self/paragraph.js +21 -0
  12. package/addons/render/editor/styles/editor.css +252 -0
  13. package/addons/render/elements/front/functions/types/colors/badge.js +19 -0
  14. package/addons/render/elements/front/functions/types/colors/status.js +24 -0
  15. package/addons/render/elements/front/functions/types/escape.js +8 -0
  16. package/addons/render/elements/front/functions/types/format/currency.js +16 -0
  17. package/addons/render/elements/front/functions/types/format/date.js +16 -0
  18. package/addons/render/elements/front/functions/types/format/number.js +24 -0
  19. package/addons/render/elements/front/functions/types/format/timeago.js +43 -0
  20. package/addons/render/elements/front/functions/types/render/avatar.js +10 -0
  21. package/addons/render/elements/front/functions/types/render/badge.js +17 -0
  22. package/addons/render/elements/front/functions/types/render/boolean.js +8 -0
  23. package/addons/render/elements/front/functions/types/render/chip.js +6 -0
  24. package/addons/render/elements/front/functions/types/render/currency.js +7 -0
  25. package/addons/render/elements/front/functions/types/render/date.js +6 -0
  26. package/addons/render/elements/front/functions/types/render/description.js +12 -0
  27. package/addons/render/elements/front/functions/types/render/group.js +11 -0
  28. package/addons/render/elements/front/functions/types/render/icon.js +8 -0
  29. package/addons/render/elements/front/functions/types/render/image.js +9 -0
  30. package/addons/render/elements/front/functions/types/render/link.js +8 -0
  31. package/addons/render/elements/front/functions/types/render/media.js +16 -0
  32. package/addons/render/elements/front/functions/types/render/metric.js +13 -0
  33. package/addons/render/elements/front/functions/types/render/number.js +6 -0
  34. package/addons/render/elements/front/functions/types/render/progress.js +13 -0
  35. package/addons/render/elements/front/functions/types/render/status.js +12 -0
  36. package/addons/render/elements/front/functions/types/render/tag.js +6 -0
  37. package/addons/render/elements/front/functions/types/render/tags.js +11 -0
  38. package/addons/render/elements/front/functions/types/render/text.js +8 -0
  39. package/addons/render/elements/front/functions/types/render/timeago.js +6 -0
  40. package/addons/render/elements/front/functions/types/render.js +16 -0
  41. package/addons/render/elements/front/items/directives/element.js +8 -3
  42. package/addons/render/elements/front/items/self/cards/info/info.css +499 -0
  43. package/addons/render/elements/front/items/self/cards/info/info.js +224 -0
  44. package/addons/render/elements/front/items/self/cards/item/item.css +614 -0
  45. package/addons/render/elements/front/items/self/cards/item/item.js +200 -0
  46. package/addons/render/elements/front/items/self/cards/pricing/pricing.css +318 -46
  47. package/addons/render/elements/front/items/self/cards/pricing/pricing.js +81 -30
  48. package/addons/render/elements/front/items/self/cards/profile/profile.css +446 -0
  49. package/addons/render/elements/front/items/self/cards/profile/profile.js +186 -0
  50. package/addons/render/elements/front/items/self/cards/share/share.css +445 -0
  51. package/addons/render/elements/front/items/self/cards/share/share.js +316 -0
  52. package/addons/render/elements/front/items/self/cards/stat/stat.css +356 -0
  53. package/addons/render/elements/front/items/self/cards/stat/stat.js +146 -0
  54. package/addons/render/elements/front/items/self/charts/bar/bar.css +263 -0
  55. package/addons/render/elements/front/items/self/charts/bar/bar.js +156 -0
  56. package/addons/render/elements/front/items/self/charts/donut/donut.css +222 -0
  57. package/addons/render/elements/front/items/self/charts/donut/donut.js +164 -0
  58. package/addons/render/elements/front/items/self/charts/line/line.css +229 -0
  59. package/addons/render/elements/front/items/self/charts/line/line.js +249 -0
  60. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.css +102 -0
  61. package/addons/render/elements/front/items/self/charts/sparkline/sparkline.js +164 -0
  62. package/addons/render/elements/front/items/self/core/builder/builder.css +71 -116
  63. package/addons/render/elements/front/items/self/core/builder/builder.js +212 -127
  64. package/addons/render/elements/front/items/self/core/repeater/repeater.css +338 -71
  65. package/addons/render/elements/front/items/self/core/repeater/repeater.js +191 -44
  66. package/addons/render/elements/front/items/self/data/filters/filters.css +541 -0
  67. package/addons/render/elements/front/items/self/data/filters/filters.js +504 -0
  68. package/addons/render/elements/front/items/self/data/table/table.css +588 -0
  69. package/addons/render/elements/front/items/self/data/table/table.js +589 -0
  70. package/addons/render/elements/front/items/self/form/button/button.css +430 -103
  71. package/addons/render/elements/front/items/self/form/button/button.js +109 -101
  72. package/addons/render/elements/front/items/self/form/checkbox/checkbox.css +356 -39
  73. package/addons/render/elements/front/items/self/form/checkbox/checkbox.js +109 -75
  74. package/addons/render/elements/front/items/self/form/color/color.css +255 -61
  75. package/addons/render/elements/front/items/self/form/color/color.js +135 -41
  76. package/addons/render/elements/front/items/self/form/date/date.css +289 -38
  77. package/addons/render/elements/front/items/self/form/date/date.js +108 -24
  78. package/addons/render/elements/front/items/self/form/editor/editor.css +447 -0
  79. package/addons/render/elements/front/items/self/form/editor/editor.js +794 -0
  80. package/addons/render/elements/front/items/self/form/field/field.css +160 -29
  81. package/addons/render/elements/front/items/self/form/field/field.js +36 -16
  82. package/addons/render/elements/front/items/self/form/input/input.css +272 -32
  83. package/addons/render/elements/front/items/self/form/input/input.js +324 -124
  84. package/addons/render/elements/front/items/self/form/radio/radio.css +310 -45
  85. package/addons/render/elements/front/items/self/form/radio/radio.js +99 -80
  86. package/addons/render/elements/front/items/self/form/rating/rating.css +234 -57
  87. package/addons/render/elements/front/items/self/form/rating/rating.js +216 -86
  88. package/addons/render/elements/front/items/self/form/section/section.css +247 -32
  89. package/addons/render/elements/front/items/self/form/section/section.js +53 -16
  90. package/addons/render/elements/front/items/self/form/select/select.css +362 -64
  91. package/addons/render/elements/front/items/self/form/select/select.js +156 -30
  92. package/addons/render/elements/front/items/self/form/slider/slider.css +331 -123
  93. package/addons/render/elements/front/items/self/form/slider/slider.js +124 -26
  94. package/addons/render/elements/front/items/self/form/tags/tags.css +328 -53
  95. package/addons/render/elements/front/items/self/form/tags/tags.js +155 -28
  96. package/addons/render/elements/front/items/self/form/textarea/textarea.css +128 -27
  97. package/addons/render/elements/front/items/self/form/textarea/textarea.js +172 -113
  98. package/addons/render/elements/front/items/self/form/toggle/toggle.css +239 -39
  99. package/addons/render/elements/front/items/self/form/toggle/toggle.js +32 -17
  100. package/addons/render/elements/front/items/self/form/transfer/transfer.css +377 -0
  101. package/addons/render/elements/front/items/self/form/transfer/transfer.js +453 -0
  102. package/addons/render/elements/front/items/self/form/upload/upload.css +408 -0
  103. package/addons/render/elements/front/items/self/form/upload/upload.js +469 -0
  104. package/addons/render/elements/front/items/self/global/accordion/accordion.css +377 -0
  105. package/addons/render/elements/front/items/self/global/accordion/accordion.js +135 -0
  106. package/addons/render/elements/front/items/self/global/code/code.css +207 -44
  107. package/addons/render/elements/front/items/self/global/code/code.js +327 -19
  108. package/addons/render/elements/front/items/self/global/gallery/gallery.css +521 -0
  109. package/addons/render/elements/front/items/self/global/gallery/gallery.js +291 -0
  110. package/addons/render/elements/front/items/self/global/heading/heading.css +151 -49
  111. package/addons/render/elements/front/items/self/global/heading/heading.js +30 -15
  112. package/addons/render/elements/front/items/self/global/markdown/markdown.css +284 -135
  113. package/addons/render/elements/front/items/self/global/markdown/markdown.js +35 -5
  114. package/addons/render/elements/front/items/self/global/menu/menu.css +311 -56
  115. package/addons/render/elements/front/items/self/global/menu/menu.js +95 -47
  116. package/addons/render/elements/front/items/self/global/notice/notice.css +263 -23
  117. package/addons/render/elements/front/items/self/global/notice/notice.js +51 -11
  118. package/addons/render/elements/front/items/self/global/parameters/parameters.css +276 -33
  119. package/addons/render/elements/front/items/self/global/parameters/parameters.js +86 -16
  120. package/addons/render/elements/front/items/self/global/tags/tags.css +215 -29
  121. package/addons/render/elements/front/items/self/global/tags/tags.js +91 -17
  122. package/addons/render/elements/front/items/self/navigation/dock/dock.css +221 -0
  123. package/addons/render/elements/front/items/self/navigation/dock/dock.js +134 -0
  124. package/addons/render/elements/front/items/self/navigation/footer/footer.css +356 -0
  125. package/addons/render/elements/front/items/self/navigation/footer/footer.js +219 -0
  126. package/addons/render/elements/front/items/self/navigation/navbar/navbar.css +736 -76
  127. package/addons/render/elements/front/items/self/navigation/navbar/navbar.js +437 -29
  128. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.css +327 -196
  129. package/addons/render/elements/front/items/self/navigation/sidebar/sidebar.js +115 -62
  130. package/addons/render/elements/front/items/self/navigation/steps/steps.css +345 -0
  131. package/addons/render/elements/front/items/self/navigation/steps/steps.js +113 -0
  132. package/addons/render/elements/front/items/self/navigation/tabs/tabs.css +507 -33
  133. package/addons/render/elements/front/items/self/navigation/tabs/tabs.js +62 -19
  134. package/addons/render/elements/front/items/self/status/code/code.css +83 -12
  135. package/addons/render/elements/front/items/self/status/code/code.js +15 -4
  136. package/addons/render/elements/front/items/self/status/empty/empty.css +95 -15
  137. package/addons/render/elements/front/items/self/status/empty/empty.js +17 -12
  138. package/addons/render/elements/front/items/self/status/error/error.css +99 -14
  139. package/addons/render/elements/front/items/self/status/error/error.js +21 -11
  140. package/addons/render/elements/front/items/self/status/loading/loading.css +85 -14
  141. package/addons/render/elements/front/items/self/status/loading/loading.js +5 -6
  142. package/addons/render/elements/front/styles/types.css +363 -0
  143. package/instructions.txt +28 -0
  144. package/lib/load.js +1 -0
  145. package/lib/styles/reset.css +89 -76
  146. package/package.json +1 -1
  147. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.css +0 -410
  148. package/addons/render/elements/front/items/self/form/editor-markdown/editor-markdown.js +0 -191
  149. package/addons/render/elements/front/items/self/global/faq/faq.css +0 -98
  150. package/addons/render/elements/front/items/self/global/faq/faq.js +0 -56
@@ -1,75 +1,109 @@
1
- onetype.AddonReady('elements', (elements) =>
2
- {
3
- elements.ItemAdd({
4
- id: 'form-checkbox',
5
- icon: 'check_box',
6
- name: 'Checkbox',
7
- description: 'Checkbox input with custom styling.',
8
- category: 'Form',
9
- author: 'OneType',
10
- config: {
11
- label: {
12
- type: 'string',
13
- value: ''
14
- },
15
- name: {
16
- type: 'string',
17
- value: ''
18
- },
19
- value: {
20
- type: 'boolean',
21
- value: false
22
- },
23
- disabled: {
24
- type: 'boolean',
25
- value: false
26
- },
27
- variant: {
28
- type: 'array',
29
- value: ['bg-1', 'size-m'],
30
- options: ['bg-1', 'bg-2', 'bg-3', 'bg-4', 'transparent', 'border', 'size-s', 'size-m', 'size-l']
31
- },
32
- _change: {
33
- type: 'function'
34
- },
35
- _click: {
36
- type: 'function'
37
- }
38
- },
39
- render: function()
40
- {
41
- this.handle = ({ event }) =>
42
- {
43
- this.value = event.target.checked;
44
-
45
- if (this._change)
46
- {
47
- this._change({ event, value: this.value });
48
- }
49
- };
50
-
51
- this.click = ({ event }) =>
52
- {
53
- if (this._click)
54
- {
55
- this._click({ event, value: this.value });
56
- }
57
- };
58
-
59
- return `
60
- <label :class="'holder ' + variant.join(' ')">
61
- <input
62
- type="checkbox"
63
- :name="name"
64
- :checked="value"
65
- :disabled="disabled"
66
- ot-change="handle"
67
- ot-click="click"
68
- />
69
- <span class="mark"></span>
70
- <span ot-if="label" class="label">{{ label }}</span>
71
- </label>
72
- `;
73
- }
74
- });
75
- });
1
+ onetype.AddonReady('elements', (elements) =>
2
+ {
3
+ elements.ItemAdd({
4
+ id: 'form-checkbox',
5
+ icon: 'check_box',
6
+ name: 'Checkbox',
7
+ description: 'Premium checkbox with label, description, indeterminate state and color variants.',
8
+ category: 'Form',
9
+ author: 'OneType',
10
+ config: {
11
+ label: {
12
+ type: 'string'
13
+ },
14
+ description: {
15
+ type: 'string'
16
+ },
17
+ icon: {
18
+ type: 'string'
19
+ },
20
+ count: {
21
+ type: 'string|number'
22
+ },
23
+ name: {
24
+ type: 'string'
25
+ },
26
+ value: {
27
+ type: 'boolean'
28
+ },
29
+ indeterminate: {
30
+ type: 'boolean'
31
+ },
32
+ disabled: {
33
+ type: 'boolean'
34
+ },
35
+ variant: {
36
+ type: 'array',
37
+ value: ['bg-1', 'size-m'],
38
+ options: [
39
+ 'bg-1', 'bg-2', 'bg-3', 'bg-4',
40
+ 'transparent', 'border',
41
+ 'color-brand', 'color-blue', 'color-red', 'color-orange', 'color-green',
42
+ 'size-s', 'size-m', 'size-l',
43
+ 'reverse'
44
+ ]
45
+ },
46
+ _change: {
47
+ type: 'function'
48
+ },
49
+ _click: {
50
+ type: 'function'
51
+ }
52
+ },
53
+ render: function()
54
+ {
55
+ this.hasInfo = !!this.label || !!this.description;
56
+ this.hasIcon = !!this.icon;
57
+ this.hasCount = this.count !== undefined && this.count !== null && this.count !== '';
58
+
59
+ this.OnReady(() =>
60
+ {
61
+ const input = this.Element?.querySelector('input');
62
+
63
+ if(input)
64
+ {
65
+ input.indeterminate = !!this.indeterminate;
66
+ }
67
+ });
68
+
69
+ this.handle = ({ event }) =>
70
+ {
71
+ this.value = event.target.checked;
72
+ this.indeterminate = false;
73
+
74
+ if(this._change)
75
+ {
76
+ this._change({ event, value: this.value });
77
+ }
78
+ };
79
+
80
+ this.click = ({ event }) =>
81
+ {
82
+ if(this._click)
83
+ {
84
+ this._click({ event, value: this.value });
85
+ }
86
+ };
87
+
88
+ return /* html */ `
89
+ <label :class="'holder ' + variant.join(' ') + (indeterminate ? ' indeterminate' : '') + (disabled ? ' disabled' : '')">
90
+ <input
91
+ type="checkbox"
92
+ :name="name"
93
+ :checked="value"
94
+ :disabled="disabled"
95
+ ot-change="handle"
96
+ ot-click="click"
97
+ />
98
+ <span class="mark"></span>
99
+ <i ot-if="hasIcon" class="icon">{{ icon }}</i>
100
+ <span ot-if="hasInfo" class="info">
101
+ <span ot-if="label" class="label">{{ label }}</span>
102
+ <span ot-if="description" class="description">{{ description }}</span>
103
+ </span>
104
+ <span ot-if="hasCount" class="count">{{ count }}</span>
105
+ </label>
106
+ `;
107
+ }
108
+ });
109
+ });
@@ -4,55 +4,61 @@
4
4
  {
5
5
  display: flex;
6
6
  width: 100%;
7
- min-width: 0;
8
7
  }
9
8
 
10
9
  /* Holder */
11
10
 
12
11
  .e-21311850 > .holder
13
12
  {
13
+ display: flex;
14
+ flex-direction: column;
15
+ gap: var(--ot-spacing-s);
16
+ width: 100%;
17
+ }
18
+
19
+ /* Field (input row) */
20
+
21
+ .e-21311850 > .holder > .field
22
+ {
23
+ position: relative;
14
24
  display: flex;
15
25
  align-items: center;
16
26
  gap: var(--ot-spacing-s);
17
27
  width: 100%;
18
- padding: var(--ot-spacing-x);
19
- border-radius: var(--ot-radius-m);
28
+ padding: 0 var(--ot-spacing-s);
20
29
  border: 1px solid transparent;
30
+ border-radius: var(--ot-radius-m);
21
31
  background: transparent;
22
- transition: background 0.15s ease, border-color 0.15s ease;
32
+ transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.2s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.2s cubic-bezier(0.22, 1, 0.36, 1);
23
33
  }
24
34
 
25
35
  /* Swatch */
26
36
 
27
- .e-21311850 > .holder > .swatch
37
+ .e-21311850 > .holder > .field > .swatch
28
38
  {
29
39
  position: relative;
30
40
  flex-shrink: 0;
31
41
  border-radius: var(--ot-radius-s);
32
- border: 1px solid rgba(255, 255, 255, 0.1);
42
+ border: 1px solid var(--ot-bg-2-border);
33
43
  cursor: pointer;
34
44
  overflow: hidden;
35
- transition: border-color 0.15s ease, transform 0.15s ease;
36
45
  padding: 0;
37
46
  outline: none;
47
+ background-color: transparent;
48
+ background-image: linear-gradient(45deg, var(--ot-bg-3) 25%, transparent 25%), linear-gradient(-45deg, var(--ot-bg-3) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--ot-bg-3) 75%), linear-gradient(-45deg, transparent 75%, var(--ot-bg-3) 75%);
49
+ background-size: 8px 8px;
50
+ background-position: 0 0, 0 4px, 4px -4px, -4px 0;
51
+ transition: border-color 0.2s cubic-bezier(0.22, 1, 0.36, 1), transform 0.2s cubic-bezier(0.22, 1, 0.36, 1);
38
52
  }
39
53
 
40
- .e-21311850 > .holder > .swatch:hover
41
- {
42
- border-color: rgba(255, 255, 255, 0.25);
43
- transform: scale(1.05);
44
- }
45
-
46
- .e-21311850 > .holder > .swatch:disabled
54
+ .e-21311850 > .holder > .field > .swatch:hover
47
55
  {
48
- opacity: 0.5;
49
- cursor: not-allowed;
50
- transform: none;
56
+ transform: scale(1.08);
51
57
  }
52
58
 
53
59
  /* Native color input — hidden inside swatch */
54
60
 
55
- .e-21311850 > .holder > .swatch > .native
61
+ .e-21311850 > .holder > .field > .swatch > .native
56
62
  {
57
63
  position: absolute;
58
64
  inset: 0;
@@ -66,7 +72,7 @@
66
72
 
67
73
  /* Hex input */
68
74
 
69
- .e-21311850 > .holder > .input
75
+ .e-21311850 > .holder > .field > .input
70
76
  {
71
77
  flex: 1;
72
78
  min-width: 0;
@@ -74,83 +80,271 @@
74
80
  border: none;
75
81
  outline: none;
76
82
  color: var(--ot-text-1);
77
- font-family: monospace;
83
+ font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
84
+ font-size: var(--ot-size-m);
85
+ font-weight: 500;
86
+ text-transform: uppercase;
78
87
  letter-spacing: 0.5px;
79
88
  padding: 0;
80
89
  }
81
90
 
82
- .e-21311850 > .holder > .input::placeholder
91
+ .e-21311850 > .holder > .field > .input::placeholder
83
92
  {
84
- color: var(--ot-text-2);
85
- }
86
-
87
- .e-21311850 > .holder > .input:disabled
88
- {
89
- opacity: 0.5;
90
- cursor: not-allowed;
93
+ color: var(--ot-text-3);
94
+ text-transform: none;
91
95
  }
92
96
 
93
- /* Clear button */
97
+ /* Action buttons (copy / clear) */
94
98
 
95
- .e-21311850 > .holder > .clear
99
+ .e-21311850 > .holder > .field > .action
96
100
  {
97
- display: flex;
101
+ display: inline-flex;
98
102
  align-items: center;
99
103
  justify-content: center;
100
104
  flex-shrink: 0;
105
+ width: 22px;
106
+ height: 22px;
101
107
  padding: 0;
102
108
  border: none;
103
109
  background: transparent;
110
+ border-radius: var(--ot-radius-s);
104
111
  color: var(--ot-text-3);
105
112
  cursor: pointer;
106
- transition: color 0.15s ease;
107
113
  outline: none;
114
+ transition: background 0.2s cubic-bezier(0.22, 1, 0.36, 1), color 0.2s cubic-bezier(0.22, 1, 0.36, 1);
108
115
  }
109
116
 
110
- .e-21311850 > .holder > .clear:hover
117
+ .e-21311850 > .holder > .field > .action:hover
111
118
  {
119
+ background: var(--ot-bg-2-hover);
112
120
  color: var(--ot-text-1);
113
121
  }
114
122
 
115
- .e-21311850 > .holder > .clear > i
123
+ .e-21311850 > .holder > .field > .action > i
116
124
  {
117
125
  font-size: 14px;
118
126
  }
119
127
 
120
- /* Background variants */
128
+ .e-21311850 > .holder > .field > .action.copied
129
+ {
130
+ color: var(--ot-green);
131
+ background: var(--ot-green-opacity);
132
+ }
133
+
134
+ /* Presets */
135
+
136
+ .e-21311850 > .holder > .presets
137
+ {
138
+ display: flex;
139
+ flex-wrap: wrap;
140
+ gap: var(--ot-spacing-x);
141
+ }
142
+
143
+ .e-21311850 > .holder > .presets > .preset
144
+ {
145
+ width: 22px;
146
+ height: 22px;
147
+ padding: 0;
148
+ border: 1px solid var(--ot-bg-2-border);
149
+ border-radius: var(--ot-radius-s);
150
+ cursor: pointer;
151
+ outline: none;
152
+ transition: border-color 0.2s cubic-bezier(0.22, 1, 0.36, 1), transform 0.2s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.2s cubic-bezier(0.22, 1, 0.36, 1);
153
+ }
154
+
155
+ .e-21311850 > .holder > .presets > .preset:hover
156
+ {
157
+ transform: scale(1.1);
158
+ }
121
159
 
122
- .e-21311850 > .holder.bg-1 { background: var(--ot-bg-1); }
123
- .e-21311850 > .holder.bg-1:hover { background: var(--ot-bg-1-hover); }
124
- .e-21311850 > .holder.bg-1.border { border-color: var(--ot-bg-1-border); }
125
- .e-21311850 > .holder.bg-2 { background: var(--ot-bg-2); }
126
- .e-21311850 > .holder.bg-2:hover { background: var(--ot-bg-2-hover); }
127
- .e-21311850 > .holder.bg-2.border { border-color: var(--ot-bg-2-border); }
128
- .e-21311850 > .holder.bg-3 { background: var(--ot-bg-3); }
129
- .e-21311850 > .holder.bg-3:hover { background: var(--ot-bg-3-hover); }
130
- .e-21311850 > .holder.bg-3.border { border-color: var(--ot-bg-3-border); }
131
- .e-21311850 > .holder.bg-4 { background: var(--ot-bg-4); }
132
- .e-21311850 > .holder.bg-4:hover { background: var(--ot-bg-4-hover); }
133
- .e-21311850 > .holder.bg-4.border { border-color: var(--ot-bg-4-border); }
160
+ .e-21311850 > .holder > .presets > .preset.active
161
+ {
162
+ box-shadow: 0 0 0 2px var(--ot-bg-1), 0 0 0 4px var(--ot-brand);
163
+ }
164
+
165
+ /* Focus ring */
166
+
167
+ .e-21311850 > .holder > .field:focus-within
168
+ {
169
+ box-shadow: 0 0 0 3px var(--ot-brand-opacity);
170
+ }
171
+
172
+ /* Disabled */
173
+
174
+ .e-21311850 > .holder.disabled > .field
175
+ {
176
+ cursor: not-allowed;
177
+ opacity: 0.55;
178
+ }
179
+
180
+ .e-21311850 > .holder.disabled > .field > .swatch
181
+ {
182
+ cursor: not-allowed;
183
+ transform: none;
184
+ }
185
+
186
+ .e-21311850 > .holder.disabled > .field > .input
187
+ {
188
+ cursor: not-allowed;
189
+ }
190
+
191
+ /* ===== BACKGROUND VARIANTS ===== */
192
+
193
+ .e-21311850 > .holder.bg-1 > .field
194
+ {
195
+ background: var(--ot-bg-1);
196
+ }
197
+ .e-21311850 > .holder.bg-1 > .field:hover:not(:focus-within)
198
+ {
199
+ background: var(--ot-bg-1-hover);
200
+ }
201
+ .e-21311850 > .holder.bg-1 > .field > .swatch
202
+ {
203
+ border-color: var(--ot-bg-1-border);
204
+ }
205
+ .e-21311850 > .holder.bg-1 > .field > .action:hover
206
+ {
207
+ background: var(--ot-bg-1-hover);
208
+ }
209
+
210
+ .e-21311850 > .holder.bg-2 > .field
211
+ {
212
+ background: var(--ot-bg-2);
213
+ }
214
+ .e-21311850 > .holder.bg-2 > .field:hover:not(:focus-within)
215
+ {
216
+ background: var(--ot-bg-2-hover);
217
+ }
218
+ .e-21311850 > .holder.bg-2 > .field > .swatch
219
+ {
220
+ border-color: var(--ot-bg-2-border);
221
+ }
222
+ .e-21311850 > .holder.bg-2 > .field > .action:hover
223
+ {
224
+ background: var(--ot-bg-2-hover);
225
+ }
226
+
227
+ .e-21311850 > .holder.bg-3 > .field
228
+ {
229
+ background: var(--ot-bg-3);
230
+ }
231
+ .e-21311850 > .holder.bg-3 > .field:hover:not(:focus-within)
232
+ {
233
+ background: var(--ot-bg-3-hover);
234
+ }
235
+ .e-21311850 > .holder.bg-3 > .field > .swatch
236
+ {
237
+ border-color: var(--ot-bg-3-border);
238
+ }
239
+ .e-21311850 > .holder.bg-3 > .field > .action:hover
240
+ {
241
+ background: var(--ot-bg-3-hover);
242
+ }
243
+
244
+ .e-21311850 > .holder.bg-4 > .field
245
+ {
246
+ background: var(--ot-bg-4);
247
+ }
248
+ .e-21311850 > .holder.bg-4 > .field:hover:not(:focus-within)
249
+ {
250
+ background: var(--ot-bg-4-hover);
251
+ }
252
+ .e-21311850 > .holder.bg-4 > .field > .swatch
253
+ {
254
+ border-color: var(--ot-bg-4-border);
255
+ }
256
+ .e-21311850 > .holder.bg-4 > .field > .action:hover
257
+ {
258
+ background: var(--ot-bg-4-hover);
259
+ }
134
260
 
135
261
  /* Transparent variant */
136
262
 
137
- .e-21311850 > .holder.transparent { background: transparent; padding: 0; }
263
+ .e-21311850 > .holder.transparent > .field
264
+ {
265
+ background: transparent;
266
+ padding: 0;
267
+ }
138
268
 
139
- /* Border variant */
269
+ /* Border variant — per bg level */
140
270
 
141
- .e-21311850 > .holder.border { border: 1px solid var(--ot-bg-2-border); }
142
- .e-21311850 > .holder.border:focus-within { border-color: var(--ot-brand); }
271
+ .e-21311850 > .holder.border > .field { border-color: var(--ot-bg-2-border); }
272
+ .e-21311850 > .holder.bg-1.border > .field { border-color: var(--ot-bg-1-border); }
273
+ .e-21311850 > .holder.bg-2.border > .field { border-color: var(--ot-bg-2-border); }
274
+ .e-21311850 > .holder.bg-3.border > .field { border-color: var(--ot-bg-3-border); }
275
+ .e-21311850 > .holder.bg-4.border > .field { border-color: var(--ot-bg-4-border); }
143
276
 
144
- /* Size variants */
277
+ /* ===== SIZE VARIANTS ===== */
145
278
 
146
- .e-21311850 > .holder.size-s { height: var(--ot-height-s); padding: 0 var(--ot-spacing-s); }
147
- .e-21311850 > .holder.size-s > .swatch { width: 18px; height: 18px; }
148
- .e-21311850 > .holder.size-s > .input { font-size: var(--ot-size-s); }
279
+ .e-21311850 > .holder.size-s > .field
280
+ {
281
+ height: var(--ot-height-s);
282
+ padding: 0 var(--ot-spacing-x);
283
+ }
284
+ .e-21311850 > .holder.size-s > .field > .swatch
285
+ {
286
+ width: 18px;
287
+ height: 18px;
288
+ }
289
+ .e-21311850 > .holder.size-s > .field > .input
290
+ {
291
+ font-size: var(--ot-size-s);
292
+ }
293
+ .e-21311850 > .holder.size-s > .field > .action
294
+ {
295
+ width: 18px;
296
+ height: 18px;
297
+ }
298
+ .e-21311850 > .holder.size-s > .field > .action > i
299
+ {
300
+ font-size: 13px;
301
+ }
302
+ .e-21311850 > .holder.size-s > .presets > .preset
303
+ {
304
+ width: 18px;
305
+ height: 18px;
306
+ }
149
307
 
150
- .e-21311850 > .holder.size-m { height: var(--ot-height-m); padding: 0 var(--ot-spacing-s); }
151
- .e-21311850 > .holder.size-m > .swatch { width: 22px; height: 22px; border: 1px solid var(--ot-bg-2-border); }
152
- .e-21311850 > .holder.size-m > .input { font-size: var(--ot-size-m); }
308
+ .e-21311850 > .holder.size-m > .field
309
+ {
310
+ height: var(--ot-height-m);
311
+ padding: 0 var(--ot-spacing-s);
312
+ }
313
+ .e-21311850 > .holder.size-m > .field > .swatch
314
+ {
315
+ width: 22px;
316
+ height: 22px;
317
+ }
318
+ .e-21311850 > .holder.size-m > .field > .input
319
+ {
320
+ font-size: var(--ot-size-m);
321
+ }
153
322
 
154
- .e-21311850 > .holder.size-l { height: var(--ot-height-l); padding: 0 var(--ot-spacing-m); }
155
- .e-21311850 > .holder.size-l > .swatch { width: 28px; height: 28px; }
156
- .e-21311850 > .holder.size-l > .input { font-size: var(--ot-size-m); }
323
+ .e-21311850 > .holder.size-l > .field
324
+ {
325
+ height: var(--ot-height-l);
326
+ padding: 0 var(--ot-spacing-m);
327
+ }
328
+ .e-21311850 > .holder.size-l > .field > .swatch
329
+ {
330
+ width: 28px;
331
+ height: 28px;
332
+ }
333
+ .e-21311850 > .holder.size-l > .field > .input
334
+ {
335
+ font-size: var(--ot-size-m);
336
+ }
337
+ .e-21311850 > .holder.size-l > .field > .action
338
+ {
339
+ width: 26px;
340
+ height: 26px;
341
+ }
342
+ .e-21311850 > .holder.size-l > .field > .action > i
343
+ {
344
+ font-size: 16px;
345
+ }
346
+ .e-21311850 > .holder.size-l > .presets > .preset
347
+ {
348
+ width: 28px;
349
+ height: 28px;
350
+ }