@mirror-physics/fractal-ui 0.2.0-next.78 → 0.2.0-next.80

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.
package/dist/index.css CHANGED
@@ -1,11 +1,4 @@
1
1
  /* src/styles/control.css */
2
- [data-control-size=xs] {
3
- --control-font-size: var(--control-xs-font-size);
4
- --control-line-height: var(--control-xs-line-height);
5
- --control-padding-block: var(--control-xs-padding-block);
6
- --control-padding-inline: var(--control-xs-padding-inline);
7
- --control-icon-size: var(--control-xs-icon-size);
8
- }
9
2
  [data-control-size=sm] {
10
3
  --control-font-size: var(--control-sm-font-size);
11
4
  --control-line-height: var(--control-sm-line-height);
@@ -100,6 +93,16 @@
100
93
  inline-size: var(--control-min-block-size);
101
94
  padding-inline: 0;
102
95
  }
96
+ .fractal-button--primary:not(:disabled) {
97
+ background-color: var(--button-primary-bg, var(--fg-primary));
98
+ color: var(--button-primary-fg, var(--fg-inverse));
99
+ }
100
+ .fractal-button--primary:not(:disabled):hover {
101
+ background-color: var(--button-primary-hover, var(--fg-secondary));
102
+ }
103
+ .fractal-button--primary:not(:disabled):active {
104
+ background-color: var(--button-primary-active, var(--fg-primary));
105
+ }
103
106
 
104
107
  /* src/components/CodeBlock/CodeBlock.css */
105
108
  .fractal-code-block {
@@ -596,6 +599,82 @@
596
599
  padding: 0;
597
600
  }
598
601
 
602
+ /* src/styles/floating-field.css */
603
+ .fractal-floating-field {
604
+ position: relative;
605
+ min-width: 0;
606
+ width: 100%;
607
+ --field-label-inset: var(--control-padding-inline);
608
+ }
609
+ .fractal-floating-field__label {
610
+ position: absolute;
611
+ z-index: 2;
612
+ top: 0;
613
+ left: calc(var(--field-label-inset, var(--control-padding-inline)) - 4px);
614
+ max-width: calc(100% - var(--field-label-inset, var(--control-padding-inline)) - var(--control-padding-inline));
615
+ padding-inline: 4px;
616
+ overflow: hidden;
617
+ white-space: nowrap;
618
+ text-overflow: ellipsis;
619
+ font-family: var(--font-sans);
620
+ font-size: var(--control-font-size);
621
+ line-height: var(--control-line-height);
622
+ font-weight: 400;
623
+ color: var(--fg-primary);
624
+ transform-origin: left center;
625
+ transform: translateY(calc((var(--control-min-block-size) - 100%) / 2));
626
+ transition: transform var(--duration-normal) var(--ease-out), color var(--duration-fast) var(--ease-out);
627
+ cursor: text;
628
+ }
629
+ .fractal-floating-field:where(:focus-within, [data-filled=true], [data-open=true], [data-always-float=true], :has(input:not(:placeholder-shown)), :has(textarea:not(:placeholder-shown))) > .fractal-floating-field__label {
630
+ transform: translateY(-50%) scale(0.75);
631
+ background: var(--bg-canvas);
632
+ color: var(--fg-secondary);
633
+ }
634
+ .fractal-floating-field:is(:focus-within, [data-open=true]) > .fractal-floating-field__label {
635
+ color: var(--fg-primary);
636
+ }
637
+ .fractal-floating-field:has(:disabled) > .fractal-floating-field__label {
638
+ color: var(--fg-disabled);
639
+ cursor: not-allowed;
640
+ }
641
+ .fractal-floating-field:not(:focus-within) input:placeholder-shown::placeholder,
642
+ .fractal-floating-field:not(:focus-within) textarea:placeholder-shown::placeholder {
643
+ color: transparent;
644
+ }
645
+ .fractal-floating-field[data-always-float=true] input::placeholder {
646
+ color: var(--fg-placeholder);
647
+ }
648
+ .fractal-floating-field--dropdown:not(:focus-within):not([data-open=true]):not([data-filled=true]) .fractal-dropdown-field-value {
649
+ opacity: 0;
650
+ }
651
+ .fractal-dropdown-field-value {
652
+ display: flex;
653
+ align-items: center;
654
+ gap: var(--control-icon-gap);
655
+ min-width: 0;
656
+ overflow: hidden;
657
+ }
658
+ .fractal-floating-field--dropdown > .fractal-floating-field__label {
659
+ cursor: pointer;
660
+ max-width: calc(100% - 2 * var(--control-padding-inline) - var(--control-icon-size) - var(--control-icon-gap));
661
+ }
662
+ .fractal-floating-field--textarea {
663
+ --control-min-block-size: calc(var(--control-line-height) + 2 * var(--space-3) + 2px);
664
+ --field-label-inset: var(--space-3);
665
+ }
666
+ @media (prefers-reduced-motion: reduce) {
667
+ .fractal-floating-field__label {
668
+ transition: none;
669
+ }
670
+ }
671
+ .fractal-floating-field--dropdown > .fractal-dropdown-trigger {
672
+ width: 100%;
673
+ }
674
+ .fractal-floating-field > textarea {
675
+ box-sizing: border-box;
676
+ }
677
+
599
678
  /* src/components/TableSearch/TableSearch.css */
600
679
  .fractal-table-search {
601
680
  position: relative;
@@ -620,6 +699,9 @@
620
699
  -webkit-appearance: none;
621
700
  appearance: none;
622
701
  }
702
+ .fractal-table-search .fractal-floating-field {
703
+ --field-label-inset: calc(var(--control-padding-inline) + var(--control-icon-size) + var(--control-icon-gap));
704
+ }
623
705
 
624
706
  /* src/components/NumberInput/NumberInput.css */
625
707
  .fractal-number-input {
@@ -692,6 +774,12 @@
692
774
  width: var(--control-icon-size);
693
775
  height: var(--control-icon-size);
694
776
  }
777
+ .fractal-number-input:has(.fractal-floating-field input:placeholder-shown):not(:focus-within) .fractal-number-input-unit {
778
+ visibility: hidden;
779
+ }
780
+ .fractal-number-input .fractal-floating-field__label {
781
+ max-width: calc(100% - 2 * var(--control-min-block-size) - 2 * var(--control-padding-inline));
782
+ }
695
783
 
696
784
  /* src/components/Slider/Slider.css */
697
785
  .fractal-slider {
@@ -845,6 +933,9 @@
845
933
  width: var(--control-icon-size);
846
934
  height: var(--control-icon-size);
847
935
  }
936
+ .fractal-password-input .fractal-floating-field__label {
937
+ max-width: calc(100% - var(--control-min-block-size) - 2 * var(--control-padding-inline));
938
+ }
848
939
 
849
940
  /* src/components/Label/Label.css */
850
941
  .fractal-label {
@@ -1794,6 +1885,60 @@
1794
1885
  width: var(--control-icon-size);
1795
1886
  height: var(--control-icon-size);
1796
1887
  }
1888
+ .fractal-dropdown-search {
1889
+ display: flex;
1890
+ align-items: center;
1891
+ gap: var(--space-2);
1892
+ padding: var(--control-padding-block) var(--control-padding-inline);
1893
+ border-bottom: 1px solid var(--border-subtle);
1894
+ margin-bottom: var(--space-1);
1895
+ border-radius: var(--radius-sm);
1896
+ }
1897
+ .fractal-dropdown-search:focus-within {
1898
+ box-shadow: inset 0 0 0 2px var(--border-focus);
1899
+ }
1900
+ .fractal-dropdown-search > svg {
1901
+ width: var(--control-icon-size);
1902
+ height: var(--control-icon-size);
1903
+ flex-shrink: 0;
1904
+ color: var(--fg-secondary);
1905
+ }
1906
+ .fractal-dropdown-search input {
1907
+ width: 100%;
1908
+ min-width: 0;
1909
+ padding: 0;
1910
+ border: 0;
1911
+ outline: none;
1912
+ box-shadow: none;
1913
+ background: transparent;
1914
+ color: var(--fg-primary);
1915
+ font: inherit;
1916
+ font-size: var(--control-font-size);
1917
+ line-height: var(--control-line-height);
1918
+ }
1919
+ .fractal-dropdown-search input::placeholder {
1920
+ color: var(--fg-placeholder);
1921
+ }
1922
+ .fractal-dropdown-checkbox {
1923
+ display: flex;
1924
+ align-items: center;
1925
+ justify-content: center;
1926
+ width: 16px;
1927
+ height: 16px;
1928
+ box-sizing: border-box;
1929
+ flex-shrink: 0;
1930
+ border: 1px solid var(--fg-secondary);
1931
+ border-radius: var(--radius-sm);
1932
+ }
1933
+ .fractal-dropdown-checkbox[data-checked=true] {
1934
+ background: var(--fg-primary);
1935
+ border-color: var(--fg-primary);
1936
+ color: var(--bg-canvas);
1937
+ }
1938
+ .fractal-dropdown-checkbox svg {
1939
+ width: 14px;
1940
+ height: 14px;
1941
+ }
1797
1942
 
1798
1943
  /* src/components/Link/Link.css */
1799
1944
  .fractal-link {
@@ -2583,9 +2728,6 @@
2583
2728
  height: var(--control-min-block-size);
2584
2729
  border-radius: var(--radius-full);
2585
2730
  }
2586
- .fractal-ghost-button--xs {
2587
- width: 72px;
2588
- }
2589
2731
  .fractal-ghost-button--sm {
2590
2732
  width: 84px;
2591
2733
  }
@@ -3254,7 +3396,7 @@
3254
3396
  width: 100%;
3255
3397
  min-height: 120px;
3256
3398
  resize: vertical;
3257
- border: 1px solid var(--border-default);
3399
+ border: 1px solid var(--border-subtle);
3258
3400
  border-radius: var(--radius-md);
3259
3401
  background: var(--bg-canvas);
3260
3402
  padding: var(--space-3);
@@ -3264,9 +3406,6 @@
3264
3406
  .fractal-textarea::placeholder {
3265
3407
  color: var(--fg-placeholder);
3266
3408
  }
3267
- .fractal-textarea:hover {
3268
- border-color: var(--fg-tertiary);
3269
- }
3270
3409
  .fractal-textarea:focus-visible {
3271
3410
  outline: none;
3272
3411
  border-color: var(--border-focus);
@@ -3277,6 +3416,17 @@
3277
3416
  opacity: 0.5;
3278
3417
  background: var(--bg-surface-1);
3279
3418
  }
3419
+ .fractal-textarea[data-text-style=prose] {
3420
+ font-family: var(--font-sans);
3421
+ font-size: var(--control-md-font-size);
3422
+ line-height: var(--control-md-line-height);
3423
+ }
3424
+ .fractal-floating-field--textarea > .fractal-floating-field__label {
3425
+ transform: translateY(calc(var(--space-3) + 1px));
3426
+ }
3427
+ .fractal-floating-field--textarea:where(:focus-within, :has(textarea:not(:placeholder-shown))) > .fractal-floating-field__label {
3428
+ transform: translateY(-50%) scale(0.75);
3429
+ }
3280
3430
 
3281
3431
  /* src/components/TextButton/TextButton.css */
3282
3432
  .fractal-text-button {