@frame-ui-ng/components 0.5.1-beta.0 → 0.6.0-beta.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 (105) hide show
  1. package/accordion/src/styles/_vars.css +2 -5
  2. package/accordion/src/styles/accordion.css +44 -30
  3. package/breadcrumb/src/styles/breadcrumb.css +12 -2
  4. package/button/src/styles/button.css +5 -51
  5. package/button-group/src/styles/button-group.css +0 -38
  6. package/calendar/src/styles/_vars.css +4 -0
  7. package/calendar/src/styles/calendar.css +26 -18
  8. package/carousel/src/styles/carousel.css +103 -89
  9. package/checkbox/src/styles/checkbox.css +14 -5
  10. package/collapsible/src/styles/_vars.css +1 -0
  11. package/collapsible/src/styles/collapsible.css +15 -11
  12. package/combobox/src/styles/combobox.css +11 -2
  13. package/confirm-popover/src/styles/confirm-popover.css +0 -1
  14. package/date-picker/src/styles/date-picker.css +15 -10
  15. package/dropdown-menu/src/styles/dropdown-menu-item.css +6 -2
  16. package/fesm2022/frame-ui-ng-components-accordion.mjs +201 -147
  17. package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
  18. package/fesm2022/frame-ui-ng-components-alert.mjs +2 -2
  19. package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
  20. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +10 -2
  21. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
  22. package/fesm2022/frame-ui-ng-components-button-group.mjs +2 -2
  23. package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
  24. package/fesm2022/frame-ui-ng-components-button.mjs +2 -2
  25. package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
  26. package/fesm2022/frame-ui-ng-components-calendar.mjs +202 -50
  27. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  28. package/fesm2022/frame-ui-ng-components-card.mjs +2 -2
  29. package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
  30. package/fesm2022/frame-ui-ng-components-carousel.mjs +2 -2
  31. package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
  32. package/fesm2022/frame-ui-ng-components-collapsible.mjs +80 -22
  33. package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
  34. package/fesm2022/frame-ui-ng-components-combobox.mjs +61 -6
  35. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  36. package/fesm2022/frame-ui-ng-components-command.mjs +2 -2
  37. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  38. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +6 -6
  39. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -1
  40. package/fesm2022/frame-ui-ng-components-date-picker.mjs +75 -37
  41. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  42. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +2 -2
  43. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  44. package/fesm2022/frame-ui-ng-components-empty.mjs +2 -2
  45. package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
  46. package/fesm2022/frame-ui-ng-components-hover-card.mjs +2 -2
  47. package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
  48. package/fesm2022/frame-ui-ng-components-input-otp.mjs +2 -2
  49. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  50. package/fesm2022/frame-ui-ng-components-input.mjs +2 -2
  51. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  52. package/fesm2022/frame-ui-ng-components-item.mjs +2 -2
  53. package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
  54. package/fesm2022/frame-ui-ng-components-menubar.mjs +2 -2
  55. package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
  56. package/fesm2022/frame-ui-ng-components-modal.mjs +10 -4
  57. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  58. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +4 -4
  59. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
  60. package/fesm2022/frame-ui-ng-components-pagination.mjs +20 -4
  61. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  62. package/fesm2022/frame-ui-ng-components-popover.mjs +2 -2
  63. package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
  64. package/fesm2022/frame-ui-ng-components-radio-group.mjs +2 -2
  65. package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
  66. package/fesm2022/frame-ui-ng-components-resizable.mjs +2 -2
  67. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  68. package/fesm2022/frame-ui-ng-components-sheet.mjs +90 -65
  69. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  70. package/fesm2022/frame-ui-ng-components-table.mjs +6 -5
  71. package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
  72. package/fesm2022/frame-ui-ng-components-tabs.mjs +2 -2
  73. package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
  74. package/fesm2022/frame-ui-ng-components-toast.mjs +6 -6
  75. package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
  76. package/fesm2022/frame-ui-ng-components-tooltip.mjs +6 -6
  77. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  78. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +4 -4
  79. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  80. package/fesm2022/frame-ui-ng-components.mjs +850 -420
  81. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  82. package/input/src/styles/input-group.css +0 -7
  83. package/input/src/styles/input.css +0 -23
  84. package/modal/src/styles/modal.css +5 -19
  85. package/package.json +6 -6
  86. package/pagination/src/styles/pagination.css +6 -2
  87. package/popover/src/styles/popover.css +3 -3
  88. package/select/src/styles/select-item.css +67 -68
  89. package/sheet/src/styles/sheet.css +32 -19
  90. package/src/styles/components.css +2 -2
  91. package/src/styles/corner-handles.css +217 -0
  92. package/styles/components.css +2 -2
  93. package/styles/corner-handles.css +217 -0
  94. package/styles.css +2 -2
  95. package/toggle/src/styles/toggle.css +6 -1
  96. package/tooltip/src/styles/tooltip.css +0 -1
  97. package/types/frame-ui-ng-components-accordion.d.ts +69 -61
  98. package/types/frame-ui-ng-components-calendar.d.ts +7 -7
  99. package/types/frame-ui-ng-components-collapsible.d.ts +12 -4
  100. package/types/frame-ui-ng-components-combobox.d.ts +8 -0
  101. package/types/frame-ui-ng-components-date-picker.d.ts +2 -4
  102. package/types/frame-ui-ng-components-sheet.d.ts +6 -2
  103. package/types/frame-ui-ng-components.d.ts +172 -135
  104. package/src/styles/blueprint.css +0 -707
  105. package/styles/blueprint.css +0 -707
@@ -2,7 +2,6 @@
2
2
  --frame-accordion-radius: var(--frame-radius-md);
3
3
  --frame-accordion-item-border: var(--frame-border);
4
4
  --frame-accordion-item-radius: 0px;
5
- --frame-accordion-item-padding-x: 0;
6
5
  --frame-accordion-trigger-min-height: calc(var(--frame-density-control-height-lg) + var(--frame-density-gap-lg));
7
6
  --frame-accordion-trigger-padding-y: var(--frame-density-panel-padding-md);
8
7
  --frame-accordion-trigger-padding-x: var(--frame-density-panel-padding-md);
@@ -17,10 +16,8 @@
17
16
  --frame-accordion-content-color: var(--frame-muted-foreground);
18
17
  --frame-accordion-content-font-size: 0.875rem;
19
18
  --frame-accordion-content-line-height: 1.6;
20
- --frame-accordion-content-opacity-closed: 0;
21
- --frame-accordion-content-opacity-open: 1;
22
- --frame-accordion-content-transition-duration: 240ms;
23
- --frame-accordion-content-transition-timing: cubic-bezier(0.2, 0, 0, 1);
19
+ --frame-accordion-content-motion-duration: 220ms;
20
+ --frame-accordion-content-motion-timing: cubic-bezier(0.2, 0, 0, 1);
24
21
  --frame-accordion-icon-size: 1rem;
25
22
  --frame-accordion-icon-rotation: 180deg;
26
23
  }
@@ -1,31 +1,40 @@
1
1
  @import './_vars.css';
2
2
 
3
- [frAccordion] {
4
- display: grid;
5
- border: 1px solid var(--frame-frame-line-muted, var(--frame-border));
3
+ frame-accordion {
4
+ display: block;
5
+ inline-size: 100%;
6
+ width: 100%;
7
+ max-inline-size: 100%;
8
+ min-inline-size: 0;
9
+ border: 0;
6
10
  background: var(--frame-surface);
7
11
  border-radius: var(--frame-accordion-radius, var(--frame-radius-md));
8
12
  overflow: hidden;
9
13
  }
10
14
 
11
- [frAccordion][data-border='true'] {
12
- border-color: var(--frame-border);
13
- padding-inline: 0;
15
+ frame-accordion[data-border='true'] {
16
+ border: 1px solid var(--frame-border);
14
17
  }
15
18
 
16
- [frAccordionItem] {
17
- position: relative;
19
+ frame-accordion-item {
20
+ display: block;
21
+ inline-size: 100%;
22
+ width: 100%;
23
+ max-inline-size: 100%;
24
+ min-inline-size: 0;
18
25
  border-bottom: 1px solid var(--frame-accordion-item-border, var(--frame-border));
19
26
  border-radius: var(--frame-accordion-item-radius, 0px);
20
- padding-inline: 0;
21
27
  }
22
28
 
23
- [frAccordionItem]:last-child {
29
+ frame-accordion-item:last-child {
24
30
  border-bottom: 0;
25
31
  }
26
32
 
27
- [frAccordionTrigger] {
33
+ button[frameAccordionTrigger] {
28
34
  inline-size: 100%;
35
+ width: 100%;
36
+ max-inline-size: 100%;
37
+ min-inline-size: 0;
29
38
  min-block-size: var(--frame-accordion-trigger-min-height, 3.25rem);
30
39
  display: inline-flex;
31
40
  align-items: center;
@@ -47,50 +56,55 @@
47
56
  background-color 160ms ease;
48
57
  }
49
58
 
50
- [frAccordionTrigger]:where(:not([data-disabled])):hover {
59
+ button[frameAccordionTrigger]:where(:not([data-disabled])):hover {
51
60
  color: var(--frame-accordion-trigger-hover-color, var(--frame-foreground));
52
61
  background: color-mix(in srgb, var(--frame-muted) 42%, transparent);
53
62
  }
54
63
 
55
- [frAccordionTrigger]:focus-visible {
64
+ button[frameAccordionTrigger]:focus-visible {
56
65
  outline: 1px solid var(--frame-frame-accent, var(--frame-ring));
57
66
  outline-offset: -1px;
58
67
  }
59
68
 
60
- [frAccordionTrigger][data-state='open'] {
69
+ button[frameAccordionTrigger][data-state='open'] {
61
70
  color: var(--frame-frame-accent, var(--frame-primary));
62
71
  }
63
72
 
64
- [frAccordionTrigger]:where(:disabled, [data-disabled]) {
73
+ button[frameAccordionTrigger]:where(:disabled, [data-disabled]) {
65
74
  cursor: not-allowed;
66
75
  opacity: var(--frame-accordion-trigger-disabled-opacity, 0.55);
67
76
  }
68
77
 
69
- [frAccordionContent] {
78
+ .frame-accordion__content {
70
79
  box-sizing: border-box;
80
+ inline-size: 100%;
81
+ width: 100%;
82
+ max-inline-size: 100%;
83
+ min-inline-size: 0;
84
+ overflow: hidden;
85
+ opacity: 0;
71
86
  color: var(--frame-accordion-content-color, var(--frame-muted-foreground));
72
87
  font-size: var(--frame-accordion-content-font-size, 0.875rem);
73
88
  line-height: var(--frame-accordion-content-line-height, 1.6);
74
- overflow: hidden;
75
- padding-block: 0 var(--frame-accordion-content-padding-bottom, 1rem);
76
- padding-inline: var(--frame-accordion-content-padding-inline, 1rem);
77
89
  transition:
78
- height var(--frame-accordion-content-transition-duration, 240ms)
79
- var(--frame-accordion-content-transition-timing, cubic-bezier(0.2, 0, 0, 1)),
80
- opacity var(--frame-accordion-content-transition-duration, 220ms)
81
- var(--frame-accordion-content-transition-timing, ease);
82
- will-change: height, opacity;
90
+ height var(--frame-accordion-content-motion-duration, 220ms)
91
+ var(--frame-accordion-content-motion-timing, cubic-bezier(0.2, 0, 0, 1)),
92
+ opacity var(--frame-accordion-content-motion-duration, 220ms)
93
+ var(--frame-accordion-content-motion-timing, cubic-bezier(0.2, 0, 0, 1));
83
94
  }
84
95
 
85
- [frAccordionContent][data-state='closed'] {
86
- opacity: var(--frame-accordion-content-opacity-closed, 0);
96
+ .frame-accordion__content[data-state='open'] {
97
+ opacity: 1;
87
98
  }
88
99
 
89
- [frAccordionContent][data-state='open'] {
90
- opacity: var(--frame-accordion-content-opacity-open, 1);
100
+ .frame-accordion__content-inner {
101
+ max-inline-size: 100%;
102
+ min-inline-size: 0;
103
+ padding-block: var(--frame-accordion-content-padding-bottom, 1rem);
104
+ padding-inline: var(--frame-accordion-content-padding-inline, 1rem);
91
105
  }
92
106
 
93
- [frAccordionIcon] {
107
+ [frameAccordionIcon] {
94
108
  inline-size: var(--frame-accordion-icon-size, 1rem);
95
109
  block-size: var(--frame-accordion-icon-size, 1rem);
96
110
  flex: 0 0 auto;
@@ -100,7 +114,7 @@
100
114
  transform 180ms ease;
101
115
  }
102
116
 
103
- [frAccordionTrigger][data-state='open'] [frAccordionIcon] {
117
+ button[frameAccordionTrigger][data-state='open'] [frameAccordionIcon] {
104
118
  color: var(--frame-frame-accent, var(--frame-primary));
105
119
  transform: rotate(var(--frame-accordion-icon-rotation, 180deg));
106
120
  }
@@ -75,8 +75,12 @@ nav[frBreadcrumb] {
75
75
  }
76
76
 
77
77
  [frBreadcrumbSeparator]:empty::before {
78
- color: var(--frame-frame-accent, var(--frame-primary));
79
- content: "/";
78
+ inline-size: var(--frame-breadcrumb-separator-size);
79
+ block-size: var(--frame-breadcrumb-separator-size);
80
+ background: var(--frame-frame-accent, var(--frame-primary));
81
+ content: "";
82
+ mask: url("data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%2024%2024%27%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%3E%3Cpath%20d%3D%27M16%203%208%2021%27/%3E%3C/svg%3E") center / contain no-repeat;
83
+ -webkit-mask: url("data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%2024%2024%27%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%272%27%20stroke-linecap%3D%27round%27%3E%3Cpath%20d%3D%27M16%203%208%2021%27/%3E%3C/svg%3E") center / contain no-repeat;
80
84
  }
81
85
 
82
86
  [frBreadcrumbEllipsis],
@@ -97,6 +101,12 @@ frame-breadcrumb-ellipsis:hover {
97
101
  background: var(--frame-breadcrumb-ellipsis-hover-bg);
98
102
  }
99
103
 
104
+ [frBreadcrumbEllipsis] svg,
105
+ frame-breadcrumb-ellipsis svg {
106
+ inline-size: 1rem;
107
+ block-size: 1rem;
108
+ }
109
+
100
110
  .frame-breadcrumb__sr-only {
101
111
  position: absolute;
102
112
  width: 1px;
@@ -13,13 +13,6 @@
13
13
  --frame-button-root-active-bg: color-mix(in srgb, var(--frame-primary) 84%, var(--frame-foreground));
14
14
  --frame-button-root-active-border: var(--frame-button-root-hover-border);
15
15
  --frame-button-root-active-color: var(--frame-button-root-hover-color);
16
- --frame-button-root-corner-color: color-mix(in srgb, var(--frame-primary-foreground) 88%, transparent);
17
- --frame-button-root-corner-inset: var(--frame-frame-tick-inset, 0px);
18
- --frame-button-root-corner-size: clamp(
19
- 0px,
20
- calc((1px - var(--frame-button-root-radius, 0px)) * 9999),
21
- var(--frame-frame-tick-size, 0.5rem)
22
- );
23
16
  --frame-spinner-size: var(--frame-button-loading-size, 1rem);
24
17
  --frame-spinner-stroke: var(--frame-button-loading-stroke, 2px);
25
18
  --frame-spinner-track-color: var(
@@ -27,6 +20,8 @@
27
20
  color-mix(in srgb, currentColor 24%, transparent)
28
21
  );
29
22
  --frame-spinner-indicator-color: currentColor;
23
+ appearance: none;
24
+ -webkit-appearance: none;
30
25
  position: relative;
31
26
  display: inline-flex;
32
27
  min-width: fit-content;
@@ -36,7 +31,7 @@
36
31
  gap: var(--frame-button-root-gap, 0.5rem);
37
32
  border: 1px solid var(--frame-button-root-border);
38
33
  border-radius: var(--frame-button-root-radius, var(--frame-radius-md));
39
- background: var(--frame-button-root-bg);
34
+ background-color: var(--frame-button-root-bg);
40
35
  box-shadow: var(--frame-button-root-shadow, var(--frame-shadow-sm));
41
36
  color: var(--frame-button-root-color);
42
37
  cursor: pointer;
@@ -59,32 +54,6 @@
59
54
  white-space: nowrap;
60
55
  }
61
56
 
62
- .frame-button::before {
63
- position: absolute;
64
- inset: 1px;
65
- border-radius: inherit;
66
- background:
67
- linear-gradient(var(--frame-button-root-corner-color), var(--frame-button-root-corner-color))
68
- left var(--frame-button-root-corner-inset) top var(--frame-button-root-corner-inset) /
69
- var(--frame-button-root-corner-size) 1px no-repeat,
70
- linear-gradient(var(--frame-button-root-corner-color), var(--frame-button-root-corner-color))
71
- left var(--frame-button-root-corner-inset) top var(--frame-button-root-corner-inset) / 1px
72
- var(--frame-button-root-corner-size) no-repeat,
73
- linear-gradient(var(--frame-button-root-corner-color), var(--frame-button-root-corner-color))
74
- right var(--frame-button-root-corner-inset) bottom var(--frame-button-root-corner-inset) /
75
- var(--frame-button-root-corner-size) 1px no-repeat,
76
- linear-gradient(var(--frame-button-root-corner-color), var(--frame-button-root-corner-color))
77
- right var(--frame-button-root-corner-inset) bottom var(--frame-button-root-corner-inset) / 1px
78
- var(--frame-button-root-corner-size) no-repeat;
79
- pointer-events: none;
80
- content: '';
81
- transition: opacity 150ms ease;
82
- }
83
-
84
- :root[data-frame-corner-handles='false'] .frame-button::before {
85
- content: none;
86
- }
87
-
88
57
  .frame-icon-button {
89
58
  inline-size: var(--frame-button-root-height, 2.5rem);
90
59
  min-inline-size: var(--frame-button-root-height, 2.5rem);
@@ -114,14 +83,14 @@
114
83
  }
115
84
 
116
85
  .frame-button:where(:not(:disabled, [data-disabled])):hover {
117
- background: var(--frame-button-root-hover-bg);
86
+ background-color: var(--frame-button-root-hover-bg);
118
87
  border-color: var(--frame-button-root-hover-border);
119
88
  color: var(--frame-button-root-hover-color);
120
89
  filter: var(--frame-button-root-hover-filter, brightness(0.98));
121
90
  }
122
91
 
123
92
  .frame-button:where(:not(:disabled, [data-disabled])):active {
124
- background: var(--frame-button-root-active-bg);
93
+ background-color: var(--frame-button-root-active-bg);
125
94
  border-color: var(--frame-button-root-active-border);
126
95
  /* box-shadow: var(--frame-button-root-active-shadow, inset 0 1px 2px rgb(0 0 0 / 0.12)); */
127
96
  color: var(--frame-button-root-active-color);
@@ -170,10 +139,6 @@
170
139
  box-shadow: var(--frame-button-root-disabled-shadow, none);
171
140
  }
172
141
 
173
- .frame-button:where(:disabled, [data-disabled])::before {
174
- transition: none;
175
- }
176
-
177
142
  .frame-button[data-appearance='outline'] {
178
143
  --frame-button-root-bg: var(--frame-surface);
179
144
  --frame-button-root-border: var(--frame-border);
@@ -184,7 +149,6 @@
184
149
  --frame-button-root-active-bg: color-mix(in srgb, var(--frame-surface) 65%, var(--frame-muted));
185
150
  --frame-button-root-active-border: var(--frame-button-root-hover-border);
186
151
  --frame-button-root-active-color: var(--frame-button-root-hover-color);
187
- --frame-button-root-corner-color: var(--frame-frame-accent);
188
152
  }
189
153
 
190
154
  .frame-button[data-appearance='ghost'] {
@@ -197,19 +161,9 @@
197
161
  --frame-button-root-active-bg: color-mix(in srgb, var(--frame-muted) 80%, transparent);
198
162
  --frame-button-root-active-border: var(--frame-button-root-hover-border);
199
163
  --frame-button-root-active-color: var(--frame-button-root-hover-color);
200
- --frame-button-root-corner-color: var(--frame-frame-accent);
201
164
  --frame-button-root-shadow: none;
202
165
  }
203
166
 
204
- .frame-button[data-appearance='ghost']::before {
205
- opacity: 0;
206
- }
207
-
208
- .frame-button[data-appearance='ghost']:where(:not(:disabled, [data-disabled])):hover::before,
209
- .frame-button[data-appearance='ghost']:focus-visible::before {
210
- opacity: 1;
211
- }
212
-
213
167
  .frame-button[data-size='sm'] {
214
168
  --frame-button-root-height: var(--frame-density-control-height-sm);
215
169
  min-height: var(--frame-button-root-height);
@@ -73,41 +73,3 @@ frame-button-group[data-orientation='vertical'] > :not(:first-child):not(:last-c
73
73
  position: relative;
74
74
  }
75
75
 
76
- .frame-button-group::before,
77
- [frButtonGroup]::before,
78
- frame-button-group::before {
79
- --frame-button-group-corner-size: clamp(
80
- 0px,
81
- calc((1px - var(--frame-button-group-radius, 0px)) * 9999),
82
- var(--frame-frame-tick-size, 0.375rem)
83
- );
84
- position: absolute;
85
- inset: 0;
86
- z-index: 2;
87
- background:
88
- linear-gradient(var(--frame-blueprint-corner-color, var(--frame-frame-accent)), var(--frame-blueprint-corner-color, var(--frame-frame-accent)))
89
- left top / var(--frame-button-group-corner-size) 1px no-repeat,
90
- linear-gradient(var(--frame-blueprint-corner-color, var(--frame-frame-accent)), var(--frame-blueprint-corner-color, var(--frame-frame-accent)))
91
- left top / 1px var(--frame-button-group-corner-size) no-repeat,
92
- linear-gradient(var(--frame-blueprint-corner-color, var(--frame-frame-accent)), var(--frame-blueprint-corner-color, var(--frame-frame-accent)))
93
- right bottom / var(--frame-button-group-corner-size) 1px no-repeat,
94
- linear-gradient(var(--frame-blueprint-corner-color, var(--frame-frame-accent)), var(--frame-blueprint-corner-color, var(--frame-frame-accent)))
95
- right bottom / 1px var(--frame-button-group-corner-size) no-repeat;
96
- content: "";
97
- pointer-events: none;
98
- }
99
-
100
- :root[data-frame-corner-handles='false'] .frame-button-group::before,
101
- :root[data-frame-corner-handles='false'] [frButtonGroup]::before,
102
- :root[data-frame-corner-handles='false'] frame-button-group::before {
103
- content: none;
104
- }
105
-
106
- .frame-button-group > .frame-button::before,
107
- .frame-button-group > [frButton]::before,
108
- [frButtonGroup] > .frame-button::before,
109
- [frButtonGroup] > [frButton]::before,
110
- frame-button-group > .frame-button::before,
111
- frame-button-group > [frButton]::before {
112
- content: none;
113
- }
@@ -8,6 +8,8 @@
8
8
  --frame-calendar-gap: var(--frame-density-gap-xl);
9
9
  --frame-calendar-cell-size: var(--frame-density-control-height-md);
10
10
  --frame-calendar-effective-cell-size: var(--frame-calendar-cell-size);
11
+ --frame-calendar-cell-gap-block: 0.125rem;
12
+ --frame-calendar-cell-gap-inline: 0.125rem;
11
13
  --frame-calendar-column-count: 7;
12
14
  --frame-calendar-month-flex: 0 0 calc(var(--frame-calendar-effective-cell-size) * var(--frame-calendar-column-count));
13
15
  --frame-calendar-cell-radius: var(--frame-radius-md);
@@ -28,6 +30,8 @@
28
30
  --frame-calendar-select-radius: var(--frame-radius-md);
29
31
  --frame-calendar-select-border: var(--frame-border);
30
32
  --frame-calendar-select-bg: var(--frame-background);
33
+ --frame-calendar-select-min-width: 5rem;
34
+ --frame-calendar-select-padding-inline: 0.75rem;
31
35
  --frame-calendar-focus-shadow: none;
32
36
  --frame-calendar-transition-duration: 150ms;
33
37
  }
@@ -52,21 +52,23 @@
52
52
  }
53
53
 
54
54
  .frame-calendar__select {
55
- min-height: var(--frame-calendar-select-height);
56
- border: 1px solid var(--frame-calendar-select-border);
57
- border-radius: var(--frame-calendar-select-radius);
58
- background: var(--frame-calendar-select-bg);
59
- color: inherit;
60
- font: inherit;
61
- font-size: 0.8125rem;
62
- padding-inline: 0.5rem;
63
- transition:
64
- border-color var(--frame-calendar-transition-duration) ease,
65
- transform var(--frame-calendar-transition-duration) ease,
66
- box-shadow var(--frame-calendar-transition-duration) ease;
55
+ --frame-select-trigger-height: var(--frame-calendar-select-height);
56
+ --frame-select-trigger-min-width: auto;
57
+ --frame-select-trigger-radius: var(--frame-calendar-select-radius);
58
+ --frame-select-trigger-padding-inline: var(--frame-calendar-select-padding-inline);
59
+ --frame-select-trigger-font-size: 0.8125rem;
60
+ --frame-select-trigger-font-weight: 400;
61
+ --frame-select-content-min-width: 100%;
62
+
63
+ min-width: var(--frame-calendar-select-min-width);
64
+ }
65
+
66
+ .frame-calendar__select-icon {
67
+ display: block;
68
+ inline-size: 1rem;
69
+ block-size: 1rem;
67
70
  }
68
71
 
69
- .frame-calendar__select:focus-visible,
70
72
  .frame-calendar__nav-button:focus-visible,
71
73
  .frame-calendar__day:focus-visible {
72
74
  outline: none;
@@ -105,8 +107,14 @@
105
107
  box-shadow: 2px 2px 0 color-mix(in srgb, var(--frame-frame-line-muted, var(--frame-border)) 82%, transparent);
106
108
  }
107
109
 
110
+ .frame-calendar__nav-icon {
111
+ display: block;
112
+ inline-size: 1rem;
113
+ block-size: 1rem;
114
+ }
115
+
108
116
  .frame-calendar__nav-button:disabled,
109
- .frame-calendar__select:disabled {
117
+ .frame-calendar__select[data-disabled] {
110
118
  cursor: not-allowed;
111
119
  opacity: var(--frame-calendar-day-disabled-opacity);
112
120
  }
@@ -157,8 +165,8 @@
157
165
  position: relative;
158
166
  box-sizing: border-box;
159
167
  inline-size: var(--frame-calendar-effective-cell-size);
160
- padding-block: 0.125rem;
161
- padding-inline: 0;
168
+ padding-block: var(--frame-calendar-cell-gap-block);
169
+ padding-inline: var(--frame-calendar-cell-gap-inline);
162
170
  text-align: center;
163
171
  }
164
172
 
@@ -168,8 +176,8 @@
168
176
  box-sizing: border-box;
169
177
  display: inline-flex;
170
178
  inline-size: 100%;
171
- min-inline-size: var(--frame-calendar-effective-cell-size);
172
- min-block-size: var(--frame-calendar-effective-cell-size);
179
+ min-inline-size: calc(var(--frame-calendar-effective-cell-size) - (var(--frame-calendar-cell-gap-inline) * 2));
180
+ min-block-size: calc(var(--frame-calendar-effective-cell-size) - (var(--frame-calendar-cell-gap-block) * 2));
173
181
  aspect-ratio: 1;
174
182
  flex-direction: column;
175
183
  align-items: center;
@@ -1,89 +1,103 @@
1
- @import './_vars.css';
2
-
3
- [frCarousel],
4
- frame-carousel {
5
- position: relative;
6
- display: block;
7
- width: 100%;
8
- box-sizing: border-box;
9
- }
10
-
11
- [frCarouselContent] {
12
- display: flex;
13
- gap: var(--frame-carousel-gap);
14
- overflow: auto;
15
- overscroll-behavior: contain;
16
- scroll-behavior: smooth;
17
- scroll-snap-type: x mandatory;
18
- scrollbar-width: none;
19
- border-radius: var(--frame-carousel-viewport-radius);
20
- }
21
-
22
- [frCarouselContent]::-webkit-scrollbar {
23
- display: none;
24
- }
25
-
26
- [frCarouselContent][data-orientation='vertical'] {
27
- max-block-size: var(--frame-carousel-vertical-size, 20rem);
28
- flex-direction: column;
29
- scroll-snap-type: y mandatory;
30
- }
31
-
32
- [frCarouselItem],
33
- [data-frame-carousel-clone] {
34
- flex: 0 0 var(--frame-carousel-item-size);
35
- min-width: 0;
36
- min-height: 0;
37
- scroll-snap-align: var(--frame-carousel-snap-align, start);
38
- }
39
-
40
- [frCarousel][data-align='center'] [frCarouselItem],
41
- [frCarousel][data-align='center'] [data-frame-carousel-clone],
42
- frame-carousel[data-align='center'] [frCarouselItem],
43
- frame-carousel[data-align='center'] [data-frame-carousel-clone] {
44
- --frame-carousel-snap-align: center;
45
- }
46
-
47
- [frCarousel][data-align='end'] [frCarouselItem],
48
- [frCarousel][data-align='end'] [data-frame-carousel-clone],
49
- frame-carousel[data-align='end'] [frCarouselItem],
50
- frame-carousel[data-align='end'] [data-frame-carousel-clone] {
51
- --frame-carousel-snap-align: end;
52
- }
53
-
54
- [frCarouselPrevious],
55
- [frCarouselNext] {
56
- position: absolute;
57
- z-index: 1;
58
- inline-size: var(--frame-carousel-control-size);
59
- block-size: var(--frame-carousel-control-size);
60
- padding: 0;
61
- }
62
-
63
- [frCarousel][data-orientation='horizontal'] [frCarouselPrevious],
64
- frame-carousel[data-orientation='horizontal'] [frCarouselPrevious] {
65
- inset-block-start: 50%;
66
- inset-inline-start: var(--frame-carousel-control-offset);
67
- transform: translateY(-50%);
68
- }
69
-
70
- [frCarousel][data-orientation='horizontal'] [frCarouselNext],
71
- frame-carousel[data-orientation='horizontal'] [frCarouselNext] {
72
- inset-block-start: 50%;
73
- inset-inline-end: var(--frame-carousel-control-offset);
74
- transform: translateY(-50%);
75
- }
76
-
77
- [frCarousel][data-orientation='vertical'] [frCarouselPrevious],
78
- frame-carousel[data-orientation='vertical'] [frCarouselPrevious] {
79
- inset-block-start: var(--frame-carousel-control-offset);
80
- inset-inline-start: 50%;
81
- transform: translateX(-50%) rotate(90deg);
82
- }
83
-
84
- [frCarousel][data-orientation='vertical'] [frCarouselNext],
85
- frame-carousel[data-orientation='vertical'] [frCarouselNext] {
86
- inset-block-end: var(--frame-carousel-control-offset);
87
- inset-inline-start: 50%;
88
- transform: translateX(-50%) rotate(90deg);
89
- }
1
+ @import './_vars.css';
2
+
3
+ [frCarousel],
4
+ frame-carousel,
5
+ .frame-carousel {
6
+ position: relative;
7
+ display: block;
8
+ width: 100%;
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ [frCarouselContent],
13
+ .frame-carousel__content {
14
+ display: flex;
15
+ gap: var(--frame-carousel-gap);
16
+ overflow: auto;
17
+ overscroll-behavior: contain;
18
+ scroll-behavior: smooth;
19
+ scroll-snap-type: x mandatory;
20
+ scrollbar-width: none;
21
+ border-radius: var(--frame-carousel-viewport-radius);
22
+ }
23
+
24
+ [frCarouselContent]::-webkit-scrollbar,
25
+ .frame-carousel__content::-webkit-scrollbar {
26
+ display: none;
27
+ }
28
+
29
+ [frCarouselContent][data-orientation='vertical'],
30
+ .frame-carousel__content[data-orientation='vertical'] {
31
+ max-block-size: var(--frame-carousel-vertical-size, 20rem);
32
+ flex-direction: column;
33
+ scroll-snap-type: y mandatory;
34
+ }
35
+
36
+ [frCarouselItem],
37
+ [data-frame-carousel-clone],
38
+ .frame-carousel__item {
39
+ flex: 0 0 var(--frame-carousel-item-size);
40
+ min-width: 0;
41
+ min-height: 0;
42
+ scroll-snap-align: var(--frame-carousel-snap-align, start);
43
+ }
44
+
45
+ [frCarousel][data-align='center'] [frCarouselItem],
46
+ [frCarousel][data-align='center'] [data-frame-carousel-clone],
47
+ frame-carousel[data-align='center'] [frCarouselItem],
48
+ frame-carousel[data-align='center'] [data-frame-carousel-clone],
49
+ .frame-carousel[data-align='center'] .frame-carousel__item,
50
+ .frame-carousel[data-align='center'] [data-frame-carousel-clone] {
51
+ --frame-carousel-snap-align: center;
52
+ }
53
+
54
+ [frCarousel][data-align='end'] [frCarouselItem],
55
+ [frCarousel][data-align='end'] [data-frame-carousel-clone],
56
+ frame-carousel[data-align='end'] [frCarouselItem],
57
+ frame-carousel[data-align='end'] [data-frame-carousel-clone],
58
+ .frame-carousel[data-align='end'] .frame-carousel__item,
59
+ .frame-carousel[data-align='end'] [data-frame-carousel-clone] {
60
+ --frame-carousel-snap-align: end;
61
+ }
62
+
63
+ [frCarouselPrevious],
64
+ [frCarouselNext],
65
+ .frame-carousel__control {
66
+ position: absolute;
67
+ z-index: 1;
68
+ inline-size: var(--frame-carousel-control-size);
69
+ block-size: var(--frame-carousel-control-size);
70
+ padding: 0;
71
+ }
72
+
73
+ [frCarousel][data-orientation='horizontal'] [frCarouselPrevious],
74
+ frame-carousel[data-orientation='horizontal'] [frCarouselPrevious],
75
+ .frame-carousel[data-orientation='horizontal'] .frame-carousel__control--previous {
76
+ inset-block-start: 50%;
77
+ inset-inline-start: var(--frame-carousel-control-offset);
78
+ transform: translateY(-50%);
79
+ }
80
+
81
+ [frCarousel][data-orientation='horizontal'] [frCarouselNext],
82
+ frame-carousel[data-orientation='horizontal'] [frCarouselNext],
83
+ .frame-carousel[data-orientation='horizontal'] .frame-carousel__control--next {
84
+ inset-block-start: 50%;
85
+ inset-inline-end: var(--frame-carousel-control-offset);
86
+ transform: translateY(-50%);
87
+ }
88
+
89
+ [frCarousel][data-orientation='vertical'] [frCarouselPrevious],
90
+ frame-carousel[data-orientation='vertical'] [frCarouselPrevious],
91
+ .frame-carousel[data-orientation='vertical'] .frame-carousel__control--previous {
92
+ inset-block-start: var(--frame-carousel-control-offset);
93
+ inset-inline-start: 50%;
94
+ transform: translateX(-50%) rotate(90deg);
95
+ }
96
+
97
+ [frCarousel][data-orientation='vertical'] [frCarouselNext],
98
+ frame-carousel[data-orientation='vertical'] [frCarouselNext],
99
+ .frame-carousel[data-orientation='vertical'] .frame-carousel__control--next {
100
+ inset-block-end: var(--frame-carousel-control-offset);
101
+ inset-inline-start: 50%;
102
+ transform: translateX(-50%) rotate(90deg);
103
+ }