@typlog/ui 0.11.7 → 0.12.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 (46) hide show
  1. package/{dist/addons.css → addons.css} +63 -0
  2. package/addons.d.ts +101 -0
  3. package/{dist/addons.js → addons.js} +81 -9
  4. package/{dist/base.css → base.css} +16 -60
  5. package/{dist/components → components}/badge.css +11 -0
  6. package/{dist/components → components}/button.css +0 -43
  7. package/components/card.css +31 -0
  8. package/components/dialog.css +155 -0
  9. package/{dist/components → components}/dropdown.css +79 -27
  10. package/{dist/components → components}/inputs.css +8 -8
  11. package/{dist/components → components}/pagination.css +0 -5
  12. package/{dist/components → components}/popover.css +24 -34
  13. package/components/radio.css +263 -0
  14. package/components/tabs.css +196 -0
  15. package/{dist/components → components}/toggle.css +42 -13
  16. package/{dist/components → components}/tooltip.css +9 -1
  17. package/{dist/components.css → components.css} +1054 -681
  18. package/{dist/components.d.ts → components.d.ts} +465 -247
  19. package/{dist/components.js → components.js} +1178 -986
  20. package/package.json +17 -45
  21. package/tailwind/colors.css +0 -4
  22. package/tailwind/index.css +0 -1
  23. package/tailwind.css +1077 -0
  24. package/LICENSE +0 -21
  25. package/README.md +0 -9
  26. package/dist/addons.d.ts +0 -48
  27. package/dist/components/accordion.css +0 -149
  28. package/dist/components/avatar.css +0 -131
  29. package/dist/components/card.css +0 -86
  30. package/dist/components/collapsible.css +0 -27
  31. package/dist/components/combobox.css +0 -388
  32. package/dist/components/dialog.css +0 -404
  33. package/dist/components/icon.css +0 -109
  34. package/dist/components/inset.css +0 -94
  35. package/dist/components/radio.css +0 -211
  36. package/dist/components/select.css +0 -308
  37. package/dist/components/spinner.css +0 -36
  38. package/dist/components/tabs.css +0 -122
  39. package/tailwind/breakpoints.css +0 -15
  40. /package/{dist/components → components}/checkbox.css +0 -0
  41. /package/{dist/components → components}/editable.css +0 -0
  42. /package/{dist/components → components}/quota.css +0 -0
  43. /package/{dist/components → components}/scrollarea.css +0 -0
  44. /package/{dist/components → components}/separator.css +0 -0
  45. /package/{dist/components → components}/switch.css +0 -0
  46. /package/{dist/components → components}/table.css +0 -0
@@ -1,4 +1,42 @@
1
1
 
2
+ .ui-SocialButton:where(.r-variant-classic) {
3
+ background-color: var(--social-button-background-color);
4
+ color: var(--social-button-text-color);
5
+ box-shadow: 0px 1px 2px 0px #0A0D120D, 0px -2px 0px 0px #0A0D120D inset, 0px 0px 0px 1px #0A0D122E inset;
6
+ --social-button-background-color: black;
7
+ --social-button-text-color: white;
8
+ --social-button-hover-filter: brightness(0.92) saturate(1.1);
9
+ }
10
+ @media (hover: hover) {
11
+ .ui-SocialButton:where(:hover) {
12
+ filter: var(--social-button-hover-filter);
13
+ }
14
+ }
15
+ .ui-SocialButton:where(.r-brand-google) {
16
+ --social-button-background-color: var(--color-background);
17
+ --social-button-text-color: var(--gray-12);
18
+ }
19
+ .ui-SocialButton:where(.r-brand-facebook) {
20
+ --social-button-background-color: #1877F2;
21
+ }
22
+ .ui-SocialButton:where(.r-brand-github) {
23
+ --social-button-background-color: #333;
24
+ }
25
+ .ui-SocialButton:where(.r-variant-classic):where(.r-brand-slack) {
26
+ --social-button-background-color: #611f69;
27
+ }
28
+ .ui-SocialButton:where(.r-variant-classic):where(:focus-visible) {
29
+ outline: 2px solid var(--focus-8);
30
+ outline-offset: 2px;
31
+ }
32
+ .ui-SocialButton:where(.r-variant-classic):where(:active) {
33
+ box-shadow: var(--shadow-1);
34
+ }
35
+ .ui-SocialButton:where(.r-variant-classic):where([data-disabled]) {
36
+ color: var(--gray-a10);
37
+ background-color: var(--gray-a2);
38
+ }
39
+
2
40
  .ui-IconifySample {
3
41
  display: flex;
4
42
  gap: var(--space-4);
@@ -111,3 +149,28 @@
111
149
  .ui-IconifyCollectionIconGrid button:hover {
112
150
  background-color: var(--gray-a4);
113
151
  }
152
+
153
+ .ui-SpinnerIcon {
154
+ color: var(--gray-10);
155
+ }
156
+ .ui-SpinnerIcon:where(.r-size-1) {
157
+ font-size: var(--space-3);
158
+ }
159
+ .ui-SpinnerIcon:where(.r-size-2) {
160
+ font-size: var(--space-4);
161
+ }
162
+ .ui-SpinnerIcon:where(.r-size-3) {
163
+ font-size: calc(1.25 * var(--space-4));
164
+ }
165
+
166
+ .ui-Turnstile {
167
+ background: var(--gray-a3);
168
+ }
169
+ .ui-Turnstile:where(.r-size-normal) {
170
+ width: 300px;
171
+ height: 65px;
172
+ }
173
+ .ui-Turnstile:where(.r-size-compact) {
174
+ width: 150px;
175
+ height: 140px;
176
+ }
package/addons.d.ts ADDED
@@ -0,0 +1,101 @@
1
+ import { AsTag } from 'reka-ui';
2
+ import { Component } from 'vue';
3
+ import { ComponentOptionsMixin } from 'vue';
4
+ import { ComponentProvideOptions } from 'vue';
5
+ import { DefineComponent } from 'vue';
6
+ import { PrimitiveProps } from 'reka-ui';
7
+ import { PublicProps } from 'vue';
8
+
9
+ declare type __VLS_WithTemplateSlots<T, S> = T & {
10
+ new (): {
11
+ $slots: S;
12
+ };
13
+ };
14
+
15
+ declare type BrandType = 'google' | 'facebook' | 'x' | 'github' | 'apple' | 'slack' | 'figma';
16
+
17
+ export declare const IconifyCollection: DefineComponent<IconifyCollectionProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
18
+ select: (icon: string) => any;
19
+ }, string, PublicProps, Readonly<IconifyCollectionProps> & Readonly<{
20
+ onSelect?: ((icon: string) => any) | undefined;
21
+ }>, {
22
+ perpage: number;
23
+ iconSize: string | number;
24
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
25
+
26
+ export declare interface IconifyCollectionProps {
27
+ prefix?: string;
28
+ search?: string;
29
+ perpage?: number;
30
+ iconSize?: string | number;
31
+ }
32
+
33
+ declare type RadiusType = 'none' | 'small' | 'medium' | 'large' | 'full';
34
+
35
+ export declare const SocialButton: __VLS_WithTemplateSlots<DefineComponent<SocialButtonProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<SocialButtonProps> & Readonly<{}>, {
36
+ as: AsTag | Component;
37
+ size: "1" | "2" | "3" | "4";
38
+ variant: "classic" | "solid" | "soft" | "surface" | "outline";
39
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>, {
40
+ default?(_: {}): any;
41
+ }>;
42
+
43
+ export declare interface SocialButtonProps extends PrimitiveProps {
44
+ brand: BrandType;
45
+ variant?: 'classic' | 'solid' | 'soft' | 'surface' | 'outline';
46
+ radius?: RadiusType;
47
+ /**
48
+ * Control the size of the social button.
49
+ * @default "2"
50
+ */
51
+ size?: '1' | '2' | '3' | '4';
52
+ disabled?: boolean;
53
+ }
54
+
55
+ export declare const SpinnerIcon: DefineComponent<SpinnerIconProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<SpinnerIconProps> & Readonly<{}>, {
56
+ size: "1" | "2" | "3";
57
+ icon: SpinnerIcon_2;
58
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
59
+
60
+ declare type SpinnerIcon_2 = '12-dots-scale-rotate' | '180-ring' | '180-ring-with-bg' | '270-ring' | '270-ring-with-bg' | '3-dots-bounce' | '3-dots-fade' | '3-dots-move' | '3-dots-rotate' | '3-dots-scale' | '3-dots-scale-middle' | '6-dots-rotate' | '6-dots-scale' | '6-dots-scale-middle' | '8-dots-rotate' | '90-ring' | '90-ring-with-bg' | 'bars-fade' | 'bars-rotate-fade' | 'bars-scale' | 'bars-scale-fade' | 'bars-scale-middle' | 'blocks-scale' | 'blocks-shuffle-2' | 'blocks-shuffle-3' | 'blocks-wave' | 'bouncing-ball' | 'clock' | 'dot-revolve' | 'eclipse' | 'eclipse-half' | 'gooey-balls-1' | 'gooey-balls-2' | 'pulse' | 'pulse-2' | 'pulse-3' | 'pulse-multiple' | 'pulse-ring' | 'pulse-rings-2' | 'pulse-rings-3' | 'pulse-rings-multiple' | 'ring-resize' | 'tadpole' | 'wifi' | 'wifi-fade' | 'wind-toy';
61
+
62
+ export declare interface SpinnerIconProps {
63
+ /**
64
+ * Icon name of the spinner.
65
+ * @default "180-ring"
66
+ */
67
+ icon?: SpinnerIcon_2;
68
+ /**
69
+ * Control size of the spinner.
70
+ * @default "2"
71
+ */
72
+ size?: '1' | '2' | '3';
73
+ }
74
+
75
+ export declare const Turnstile: DefineComponent<TurnstileProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
76
+ "update:modelValue": (args_0: string) => any;
77
+ }, string, PublicProps, Readonly<TurnstileProps> & Readonly<{
78
+ "onUpdate:modelValue"?: ((args_0: string) => any) | undefined;
79
+ }>, {
80
+ size: "normal" | "compact";
81
+ theme: "light" | "dark" | "auto";
82
+ action: string;
83
+ resetInterval: number;
84
+ appearance: "always" | "execute" | "interaction-only";
85
+ renderOnMount: boolean;
86
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {
87
+ element: HTMLDivElement;
88
+ }, HTMLDivElement>;
89
+
90
+ export declare interface TurnstileProps {
91
+ sitekey: string;
92
+ modelValue?: string;
93
+ resetInterval?: number;
94
+ size?: 'normal' | 'compact';
95
+ theme?: 'light' | 'dark' | 'auto';
96
+ action?: string;
97
+ appearance?: 'always' | 'execute' | 'interaction-only';
98
+ renderOnMount?: boolean;
99
+ }
100
+
101
+ export { }
@@ -1,13 +1,60 @@
1
- import { defineComponent, createElementBlock, openBlock, createElementVNode, toDisplayString, Fragment, renderList, createVNode, unref, ref, computed, onMounted, withDirectives, createCommentVNode, withKeys, createBlock, mergeProps, withModifiers, vShow, withCtx, createTextVNode, normalizeStyle, useTemplateRef, onBeforeUnmount } from "vue";
1
+ import { defineComponent, computed, createBlock, openBlock, unref, normalizeClass, withCtx, createCommentVNode, renderSlot, createElementBlock, createElementVNode, toDisplayString, Fragment, renderList, createVNode, ref, onMounted, withDirectives, withKeys, mergeProps, withModifiers, vShow, createTextVNode, normalizeStyle, useTemplateRef, onBeforeUnmount } from "vue";
2
+ import { Primitive, injectDialogRootContext } from "reka-ui";
2
3
  import { Icon } from "@iconify/vue";
3
- import { TextField, Button, Tooltip, Pagination } from "./components";
4
+ import { buildPropsClass, TextField, Button, Tooltip, Pagination } from "./components";
5
+ const BRAND_ICONS = {
6
+ google: "logos:google-icon",
7
+ facebook: "simple-icons:facebook",
8
+ x: "simple-icons:x",
9
+ github: "simple-icons:github",
10
+ apple: "simple-icons:apple",
11
+ slack: "logos:slack-icon",
12
+ figma: "logos:figma"
13
+ };
14
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
15
+ __name: "SocialButton",
16
+ props: {
17
+ brand: {},
18
+ variant: { default: "classic" },
19
+ radius: {},
20
+ size: { default: "2" },
21
+ disabled: { type: Boolean },
22
+ asChild: { type: Boolean },
23
+ as: { default: "button" }
24
+ },
25
+ setup(__props) {
26
+ const props = __props;
27
+ const resetClass = buildPropsClass(props, ["size", "brand", "variant"]);
28
+ const brandIcon = computed(() => {
29
+ return BRAND_ICONS[props.brand];
30
+ });
31
+ return (_ctx, _cache) => {
32
+ return openBlock(), createBlock(unref(Primitive), {
33
+ class: normalizeClass(["ui-Button ui-SocialButton", unref(resetClass)]),
34
+ "as-child": props.asChild,
35
+ as: props.as,
36
+ "data-radius": props.radius,
37
+ "data-disabled": props.disabled ? true : void 0
38
+ }, {
39
+ default: withCtx(() => [
40
+ brandIcon.value ? (openBlock(), createBlock(unref(Icon), {
41
+ key: 0,
42
+ icon: brandIcon.value
43
+ }, null, 8, ["icon"])) : createCommentVNode("", true),
44
+ renderSlot(_ctx.$slots, "default")
45
+ ]),
46
+ _: 3
47
+ }, 8, ["class", "as-child", "as", "data-radius", "data-disabled"]);
48
+ };
49
+ }
50
+ });
4
51
  const _hoisted_1$1 = {
5
52
  type: "button",
6
53
  class: "ui-IconifySample"
7
54
  };
8
55
  const _hoisted_2$1 = { class: "ui-IconifySampleInfo" };
9
56
  const _hoisted_3$1 = { class: "ui-IconifySampleIcons" };
10
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
57
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
11
58
  __name: "IconifySample",
12
59
  props: {
13
60
  prefix: {},
@@ -105,7 +152,7 @@ const filterIcons = (names, query, suffix) => {
105
152
  return match;
106
153
  });
107
154
  };
108
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
155
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
109
156
  __name: "IconifyCollection",
110
157
  props: {
111
158
  prefix: {},
@@ -117,6 +164,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
117
164
  setup(__props, { emit: __emit }) {
118
165
  const props = __props;
119
166
  const emits = __emit;
167
+ const dialogContext = injectDialogRootContext(null);
120
168
  const shouldDisplay = ref("all");
121
169
  const groupCollections = ref([]);
122
170
  const collectionFilter = ref("");
@@ -137,6 +185,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
137
185
  };
138
186
  const onSelectIcon = (icon) => {
139
187
  emits("select", icon);
188
+ if (dialogContext) {
189
+ dialogContext.onOpenChange(false);
190
+ }
140
191
  };
141
192
  const onSearch = async () => {
142
193
  if (searchQuery.value) {
@@ -253,7 +304,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
253
304
  ]),
254
305
  createElementVNode("div", _hoisted_8, [
255
306
  (openBlock(true), createElementBlock(Fragment, null, renderList(collection.items, (item) => {
256
- return openBlock(), createBlock(_sfc_main$2, mergeProps({
307
+ return openBlock(), createBlock(_sfc_main$3, mergeProps({
257
308
  key: item.prefix
258
309
  }, { ref_for: true }, item, {
259
310
  onClick: withModifiers(($event) => onSelectPrefix(item.prefix), ["prevent"])
@@ -274,7 +325,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
274
325
  onClick: withModifiers(reset, ["prevent"])
275
326
  }, {
276
327
  default: withCtx(() => _cache[5] || (_cache[5] = [
277
- createTextVNode(" Back ")
328
+ createTextVNode(" Back ", -1)
278
329
  ])),
279
330
  _: 1,
280
331
  __: [5]
@@ -344,6 +395,25 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
344
395
  };
345
396
  }
346
397
  });
398
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
399
+ __name: "SpinnerIcon",
400
+ props: {
401
+ icon: { default: "180-ring" },
402
+ size: { default: "2" }
403
+ },
404
+ setup(__props) {
405
+ const props = __props;
406
+ const iconName = computed(() => {
407
+ return `svg-spinners:${props.icon}`;
408
+ });
409
+ return (_ctx, _cache) => {
410
+ return openBlock(), createBlock(unref(Icon), {
411
+ class: normalizeClass(["ui-SpinnerIcon", `r-size-${_ctx.size}`]),
412
+ icon: iconName.value
413
+ }, null, 8, ["class", "icon"]);
414
+ };
415
+ }
416
+ });
347
417
  const turnstileSrc = "https://challenges.cloudflare.com/turnstile/v0/api.js";
348
418
  const turnstileLoadFunction = "cfTurnstileOnLoad";
349
419
  let turnstileState = typeof window !== "undefined" ? window.turnstile !== void 0 ? "ready" : "unloaded" : "unloaded";
@@ -431,12 +501,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
431
501
  return openBlock(), createElementBlock("div", {
432
502
  ref_key: "element",
433
503
  ref: element,
434
- class: "ui-Turnstile"
435
- }, null, 512);
504
+ class: normalizeClass(["ui-Turnstile", `r-size-${_ctx.size}`])
505
+ }, null, 2);
436
506
  };
437
507
  }
438
508
  });
439
509
  export {
440
- _sfc_main$1 as IconifyCollection,
510
+ _sfc_main$2 as IconifyCollection,
511
+ _sfc_main$4 as SocialButton,
512
+ _sfc_main$1 as SpinnerIcon,
441
513
  _sfc_main as Turnstile
442
514
  };
@@ -6427,66 +6427,6 @@
6427
6427
  --scaling: 1.2;
6428
6428
  }
6429
6429
 
6430
- html.light {
6431
- --light-0: white;
6432
- --light-a1: var(--white-a1);
6433
- --light-a2: var(--white-a2);
6434
- --light-a3: var(--white-a3);
6435
- --light-a4: var(--white-a4);
6436
- --light-a5: var(--white-a5);
6437
- --light-a6: var(--white-a6);
6438
- --light-a7: var(--white-a7);
6439
- --light-a8: var(--white-a8);
6440
- --light-a9: var(--white-a9);
6441
- --light-a10: var(--white-a10);
6442
- --light-a11: var(--white-a11);
6443
- --light-a12: var(--white-a12);
6444
- --dark-0: black;
6445
- --dark-a1: var(--black-a1);
6446
- --dark-a2: var(--black-a2);
6447
- --dark-a3: var(--black-a3);
6448
- --dark-a4: var(--black-a4);
6449
- --dark-a5: var(--black-a5);
6450
- --dark-a6: var(--black-a6);
6451
- --dark-a7: var(--black-a7);
6452
- --dark-a8: var(--black-a8);
6453
- --dark-a9: var(--black-a9);
6454
- --dark-a10: var(--black-a10);
6455
- --dark-a11: var(--black-a11);
6456
- --dark-a12: var(--black-a12);
6457
- --light-surface: white;
6458
- }
6459
-
6460
- html.dark {
6461
- --light-0: black;
6462
- --light-a1: var(--black-a1);
6463
- --light-a2: var(--black-a2);
6464
- --light-a3: var(--black-a3);
6465
- --light-a4: var(--black-a4);
6466
- --light-a5: var(--black-a5);
6467
- --light-a6: var(--black-a6);
6468
- --light-a7: var(--black-a7);
6469
- --light-a8: var(--black-a8);
6470
- --light-a9: var(--black-a9);
6471
- --light-a10: var(--black-a10);
6472
- --light-a11: var(--black-a11);
6473
- --light-a12: var(--black-a12);
6474
- --dark-0: white;
6475
- --dark-a1: var(--white-a1);
6476
- --dark-a2: var(--white-a2);
6477
- --dark-a3: var(--white-a3);
6478
- --dark-a4: var(--white-a4);
6479
- --dark-a5: var(--white-a5);
6480
- --dark-a6: var(--white-a6);
6481
- --dark-a7: var(--white-a7);
6482
- --dark-a8: var(--white-a8);
6483
- --dark-a9: var(--white-a9);
6484
- --dark-a10: var(--white-a10);
6485
- --dark-a11: var(--white-a11);
6486
- --dark-a12: var(--white-a12);
6487
- --light-surface: var(--slate-a1);
6488
- }
6489
-
6490
6430
  [data-radius] {
6491
6431
  --radius-1: calc(3px * var(--scaling) * var(--radius-factor));
6492
6432
  --radius-2: calc(4px * var(--scaling) * var(--radius-factor));
@@ -6790,6 +6730,15 @@ html.dark {
6790
6730
  }
6791
6731
  }
6792
6732
 
6733
+ @keyframes ui-spin {
6734
+ from {
6735
+ transform: rotate(0);
6736
+ }
6737
+ to {
6738
+ transform: rotate(360deg);
6739
+ }
6740
+ }
6741
+
6793
6742
  .ui-root {
6794
6743
  --font-size-1: calc(12px * var(--scaling));
6795
6744
  --font-size-2: calc(14px * var(--scaling));
@@ -6836,3 +6785,10 @@ html.dark {
6836
6785
  -webkit-font-smoothing: antialiased;
6837
6786
  -moz-osx-font-smoothing: grayscale;
6838
6787
  }
6788
+
6789
+ .ui-root {
6790
+ --tab-active-letter-spacing: -0.01em;
6791
+ --tab-active-word-spacing: 0em;
6792
+ --tab-inactive-letter-spacing: 0em;
6793
+ --tab-inactive-word-spacing: 0em;
6794
+ }
@@ -9,6 +9,8 @@
9
9
  line-height: 1;
10
10
  height: -moz-fit-content;
11
11
  height: fit-content;
12
+ width: -moz-fit-content;
13
+ width: fit-content;
12
14
  }
13
15
  .ui-Badge:where(.r-size-1) {
14
16
  font-size: var(--font-size-1);
@@ -18,6 +20,9 @@
18
20
  gap: calc(var(--space-1) * 1.5);
19
21
  border-radius: max(var(--radius-1), var(--radius-full));
20
22
  }
23
+ .ui-Badge:where(.r-size-1):where([data-radius="full"]) {
24
+ padding: calc(var(--space-1) * 0.5) var(--space-2);
25
+ }
21
26
  .ui-Badge:where(.r-size-2) {
22
27
  font-size: var(--font-size-1);
23
28
  line-height: var(--line-height-1);
@@ -26,6 +31,9 @@
26
31
  gap: calc(var(--space-1) * 1.5);
27
32
  border-radius: max(var(--radius-2), var(--radius-full));
28
33
  }
34
+ .ui-Badge:where(.r-size-2):where([data-radius="full"]) {
35
+ padding: var(--space-1) calc(var(--space-2) * 1.25);
36
+ }
29
37
  .ui-Badge:where(.r-size-3) {
30
38
  font-size: var(--font-size-2);
31
39
  line-height: var(--line-height-2);
@@ -34,6 +42,9 @@
34
42
  gap: var(--space-2);
35
43
  border-radius: max(var(--radius-2), var(--radius-full));
36
44
  }
45
+ .ui-Badge:where(.r-size-3):where([data-radius="full"]) {
46
+ padding: var(--space-1) calc(var(--space-2) * 1.5);
47
+ }
37
48
  .ui-Badge:where(.r-variant-solid) {
38
49
  background-color: var(--accent-9);
39
50
  color: var(--accent-contrast);
@@ -1,4 +1,3 @@
1
-
2
1
  .ui-Button {
3
2
  display: inline-flex;
4
3
  align-items: center;
@@ -130,10 +129,6 @@
130
129
  .ui-Button:where(.r-variant-soft, .r-variant-ghost):where(.r-high-contrast) {
131
130
  color: var(--accent-12);
132
131
  }
133
- .ui-Button:where(.r-variant-soft):where([data-disabled]) {
134
- color: var(--gray-a8);
135
- background-color: var(--gray-a3);
136
- }
137
132
  .ui-Button:where(.r-variant-soft) {
138
133
  background-color: var(--accent-a3);
139
134
  }
@@ -262,41 +257,3 @@
262
257
  width: var(--button-height);
263
258
  padding: 0;
264
259
  }
265
-
266
- .ui-SocialButton {
267
- background-color: var(--social-button-background-color);
268
- color: var(--social-button-text-color);
269
- box-shadow: 0px 1px 2px 0px #0A0D120D, 0px -2px 0px 0px #0A0D120D inset, 0px 0px 0px 1px #0A0D122E inset;
270
- --social-button-background-color: black;
271
- --social-button-text-color: white;
272
- --social-button-hover-filter: brightness(0.92) saturate(1.1);
273
- }
274
- @media (hover: hover) {
275
- .ui-SocialButton:where(:hover) {
276
- filter: var(--social-button-hover-filter);
277
- }
278
- }
279
- .ui-SocialButton:where(.r-brand-google) {
280
- background-color: var(--color-background);
281
- --social-button-text-color: var(--gray-12);
282
- }
283
- .ui-SocialButton:where(.r-brand-facebook) {
284
- --social-button-background-color: #1877F2;
285
- }
286
- .ui-SocialButton:where(.r-brand-github) {
287
- --social-button-background-color: #333;
288
- }
289
- .ui-SocialButton:where(.r-brand-slack) {
290
- --social-button-background-color: #611f69;
291
- }
292
- .ui-SocialButton:where(:focus-visible) {
293
- outline: 2px solid var(--focus-8);
294
- outline-offset: 2px;
295
- }
296
- .ui-SocialButton:where(:active) {
297
- box-shadow: var(--shadow-1);
298
- }
299
- .ui-SocialButton:where([data-disabled]) {
300
- color: var(--gray-a10);
301
- background-color: var(--gray-a2);
302
- }
@@ -0,0 +1,31 @@
1
+
2
+ .ui-Card:where(.r-size-1) {
3
+ --card-padding: var(--space-3);
4
+ --card-border-radius: max(var(--radius-4), var(--radius-full));
5
+ }
6
+ .ui-Card:where(.r-size-2) {
7
+ --card-padding: var(--space-4);
8
+ --card-border-radius: max(var(--radius-4), var(--radius-full));
9
+ }
10
+ .ui-Card:where(.r-size-3) {
11
+ --card-padding: var(--space-5);
12
+ --card-border-radius: max(var(--radius-5), var(--radius-full));
13
+ }
14
+ .ui-Card:where(.r-size-4) {
15
+ --card-padding: var(--space-6);
16
+ --card-border-radius: max(var(--radius-5), var(--radius-full));
17
+ }
18
+ .ui-Card:where(.r-size-5) {
19
+ --card-padding: var(--space-8);
20
+ --card-border-radius: max(var(--radius-6), var(--radius-full));
21
+ }
22
+ .ui-Card:where(.r-variant-soft) {
23
+ border-color: var(--gray-2);
24
+ background-color: var(--gray-2);
25
+ }
26
+ .ui-Card:where(.r-variant-soft):where(:-moz-any-link, button, label):where(:hover) {
27
+ border-color: var(--gray-a5);
28
+ }
29
+ .ui-Card:where(.r-variant-soft):where(:any-link, button, label):where(:hover) {
30
+ border-color: var(--gray-a5);
31
+ }
@@ -0,0 +1,155 @@
1
+
2
+ .ui-DialogTitle {
3
+ font-size: var(--font-size-4);
4
+ font-weight: var(--font-weight-semibold);
5
+ line-height: var(--line-height-4);
6
+ }
7
+
8
+ .ui-DialogDescription {
9
+ font-size: var(--font-size-3);
10
+ line-height: var(--line-height-2);
11
+ color: var(--gray-11);
12
+ }
13
+ .ui-DialogTitle + .ui-DialogDescription {
14
+ margin-top: var(--space-2);
15
+ }
16
+ .ui-DialogOverlay {
17
+ position: fixed;
18
+ inset: 0;
19
+ }
20
+ .ui-DialogOverlay::before {
21
+ position: fixed;
22
+ content: '';
23
+ inset: 0;
24
+ background-color: var(--color-overlay);
25
+ }
26
+ .ui-DialogWrapper {
27
+ display: flex;
28
+ overflow: hidden;
29
+ position: absolute;
30
+ inset: 0;
31
+ }
32
+ .ui-DialogContainer {
33
+ display: flex;
34
+ flex-direction: column;
35
+ flex-grow: 1;
36
+ align-items: center;
37
+ justify-content: flex-end;
38
+ width: 100%;
39
+ box-sizing: border-box;
40
+ padding-top: var(--space-6);
41
+ }
42
+ .ui-DialogPopup {
43
+ width: 100%;
44
+ max-height: calc(100vh - var(--space-6) * 2);
45
+ position: relative;
46
+ box-sizing: border-box;
47
+ overflow: auto;
48
+ text-align: left;
49
+ box-sizing: border-box;
50
+ background-color: var(--color-panel-solid);
51
+ outline: none;
52
+ border-top-left-radius: var(--dialog-popup-radius);
53
+ border-top-right-radius: var(--dialog-popup-radius);
54
+ max-width: var(--dialog-popup-max-width);
55
+ max-height: var(--dialog-popup-max-height);
56
+ padding: var(--dialog-popup-padding);
57
+ }
58
+ .ui-DialogPopup:where(.r-size-1) {
59
+ --dialog-popup-padding: var(--space-3);
60
+ --dialog-popup-radius: var(--radius-4);
61
+ --dialog-popup-max-width: 450px;
62
+ --dialog-popup-max-height: calc(100vh - 100px);
63
+ }
64
+ .ui-DialogPopup:where(.r-size-2) {
65
+ --dialog-popup-padding: var(--space-4);
66
+ --dialog-popup-radius: var(--radius-4);
67
+ --dialog-popup-max-width: 600px;
68
+ --dialog-popup-max-height: calc(100vh - 100px);
69
+ }
70
+ .ui-DialogPopup:where(.r-size-3) {
71
+ --dialog-popup-padding: var(--space-5);
72
+ --dialog-popup-radius: var(--radius-5);
73
+ --dialog-popup-max-width: 860px;
74
+ --dialog-popup-max-height: calc(100vh - 100px);
75
+ }
76
+ .ui-DialogPopup:where(.r-size-4) {
77
+ --dialog-popup-padding: var(--space-6);
78
+ --dialog-popup-radius: var(--radius-5);
79
+ --dialog-popup-max-width: 1200px;
80
+ --dialog-popup-max-height: calc(100vh - 100px);
81
+ }
82
+ .ui-DialogPopup:where(.r-size-5) {
83
+ --dialog-popup-padding: var(--space-6);
84
+ --dialog-popup-radius: var(--radius-5);
85
+ --dialog-popup-max-width: none;
86
+ --dialog-popup-max-height: calc(100vh - 64px);
87
+ }
88
+
89
+ /* special handle for tailwindcss p-0, when css priority doesn't work */
90
+ .ui-DialogPopup:where(.p-0) {
91
+ --dialog-popup-padding: 0;
92
+ }
93
+ @media (min-width: 450px) {
94
+ .ui-DialogContainer {
95
+ justify-content: center;
96
+ padding-bottom: max(var(--space-6), 6vh);
97
+ padding-left: var(--space-4);
98
+ padding-right: var(--space-4);
99
+ }
100
+ .ui-DialogPopup {
101
+ box-shadow: var(--shadow-6);
102
+ border-bottom-left-radius: var(--dialog-popup-radius);
103
+ border-bottom-right-radius: var(--dialog-popup-radius);
104
+ }
105
+ }
106
+ @media (prefers-reduced-motion: no-preference) {
107
+ @keyframes ui-dialog-overlay-no-op {
108
+ from {
109
+ opacity: 1;
110
+ }
111
+ to {
112
+ opacity: 1;
113
+ }
114
+ }
115
+ @keyframes ui-dialog-content-show {
116
+ from {
117
+ opacity: 0.1;
118
+ transform: translate3d(0, var(--space-6), 0);
119
+ }
120
+ to {
121
+ opacity: 1;
122
+ transform: translate3d(0, 0, 0);
123
+ }
124
+ }
125
+ @keyframes ui-dialog-content-hide {
126
+ from {
127
+ opacity: 1;
128
+ transform: translate3d(0, 0, 0);
129
+ }
130
+ to {
131
+ opacity: 1;
132
+ transform: translate3d(0, var(--space-5), 0);
133
+ }
134
+ }
135
+ .ui-DialogOverlay[data-state='closed'] {
136
+ animation: ui-dialog-overlay-no-op 160ms cubic-bezier(0.16, 1, 0.3, 1);
137
+ }
138
+ .ui-DialogOverlay[data-state='open']::before {
139
+ animation: ui-fade-in 200ms cubic-bezier(0.16, 1, 0.3, 1);
140
+ }
141
+ .ui-DialogOverlay[data-state='closed']::before {
142
+ animation: ui-fade-out 160ms cubic-bezier(0.16, 1, 0.3, 1);
143
+ }
144
+ .ui-DialogPopup:where([data-state="open"]) {
145
+ animation: ui-dialog-content-show 200ms cubic-bezier(0.16, 1, 0.3, 1);
146
+ }
147
+ .ui-DialogPopup:where([data-state="closed"]) {
148
+ animation: ui-dialog-content-hide 100ms linear;
149
+ }
150
+ }
151
+
152
+ .ui-AlertPopup {
153
+ --dialog-popup-radius: var(--radius-4);
154
+ --dialog-popup-max-width: 450px;
155
+ }