@a-type/ui 5.0.8 → 5.0.9

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 (103) hide show
  1. package/dist/css/main.css +7 -7
  2. package/dist/esm/components/button/Button.js +1 -1
  3. package/dist/esm/components/button/Button.js.map +1 -1
  4. package/dist/esm/components/button/classes.js +2 -2
  5. package/dist/esm/components/button/classes.js.map +1 -1
  6. package/dist/esm/components/camera/Camera.js +1 -1
  7. package/dist/esm/components/camera/Camera.js.map +1 -1
  8. package/dist/esm/components/card/Card.js +3 -3
  9. package/dist/esm/components/card/Card.js.map +1 -1
  10. package/dist/esm/components/checkbox/Checkbox.js +2 -2
  11. package/dist/esm/components/checkbox/Checkbox.js.map +1 -1
  12. package/dist/esm/components/datePicker/Calendar.js +1 -1
  13. package/dist/esm/components/datePicker/Calendar.js.map +1 -1
  14. package/dist/esm/components/datePicker/DateRangePicker.js +1 -1
  15. package/dist/esm/components/datePicker/DateRangePicker.js.map +1 -1
  16. package/dist/esm/components/editableText/EditableText.js +1 -1
  17. package/dist/esm/components/editableText/EditableText.js.map +1 -1
  18. package/dist/esm/components/horizontalList/HorizontalList.js +2 -2
  19. package/dist/esm/components/horizontalList/HorizontalList.js.map +1 -1
  20. package/dist/esm/components/input/Input.js +1 -1
  21. package/dist/esm/components/input/Input.js.map +1 -1
  22. package/dist/esm/components/lightbox/Lightbox.js +1 -1
  23. package/dist/esm/components/lightbox/Lightbox.js.map +1 -1
  24. package/dist/esm/components/navBar/NavBar.js +5 -5
  25. package/dist/esm/components/navBar/NavBar.js.map +1 -1
  26. package/dist/esm/components/note/Note.js +1 -1
  27. package/dist/esm/components/note/Note.js.map +1 -1
  28. package/dist/esm/components/primitives/menus.js +1 -1
  29. package/dist/esm/components/primitives/menus.js.map +1 -1
  30. package/dist/esm/components/progress/Progress.js +5 -5
  31. package/dist/esm/components/progress/Progress.js.map +1 -1
  32. package/dist/esm/components/provider/Provider.d.ts +2 -1
  33. package/dist/esm/components/provider/Provider.js +3 -2
  34. package/dist/esm/components/provider/Provider.js.map +1 -1
  35. package/dist/esm/components/provider/TweakPane.d.ts +1 -0
  36. package/dist/esm/components/provider/TweakPane.js +36 -0
  37. package/dist/esm/components/provider/TweakPane.js.map +1 -0
  38. package/dist/esm/components/scrollArea/ScrollArea.js +5 -5
  39. package/dist/esm/components/scrollArea/ScrollArea.js.map +1 -1
  40. package/dist/esm/components/slider/Slider.d.ts +1 -0
  41. package/dist/esm/components/slider/Slider.js +9 -4
  42. package/dist/esm/components/slider/Slider.js.map +1 -1
  43. package/dist/esm/components/slider/Slider.stories.d.ts +1 -0
  44. package/dist/esm/components/switch/Switch.js +2 -2
  45. package/dist/esm/components/switch/Switch.js.map +1 -1
  46. package/dist/esm/components/tabs/tabs.js +1 -1
  47. package/dist/esm/components/tabs/tabs.js.map +1 -1
  48. package/dist/esm/components/toggleGroup/toggleGroup.js +1 -1
  49. package/dist/esm/components/toggleGroup/toggleGroup.js.map +1 -1
  50. package/dist/esm/components/viewport/Viewport.js +1 -1
  51. package/dist/esm/components/viewport/Viewport.js.map +1 -1
  52. package/dist/esm/hooks/useVisualViewportOffset.d.ts +2 -2
  53. package/dist/esm/hooks/useVisualViewportOffset.js +15 -9
  54. package/dist/esm/hooks/useVisualViewportOffset.js.map +1 -1
  55. package/dist/esm/themes.stories.js +2 -2
  56. package/dist/esm/themes.stories.js.map +1 -1
  57. package/dist/esm/uno/logic/properties.d.ts +6 -0
  58. package/dist/esm/uno/logic/properties.js +6 -0
  59. package/dist/esm/uno/logic/properties.js.map +1 -1
  60. package/dist/esm/uno/preflights/user.d.ts +2 -1
  61. package/dist/esm/uno/preflights/user.js +8 -1
  62. package/dist/esm/uno/preflights/user.js.map +1 -1
  63. package/dist/esm/uno/rules/focus.d.ts +3 -0
  64. package/dist/esm/uno/rules/focus.js +43 -0
  65. package/dist/esm/uno/rules/focus.js.map +1 -0
  66. package/dist/esm/uno/rules/index.d.ts +1 -1
  67. package/dist/esm/uno/rules/index.js +2 -0
  68. package/dist/esm/uno/rules/index.js.map +1 -1
  69. package/dist/esm/uno/theme/colors.d.ts +1 -1
  70. package/dist/esm/uno/theme/colors.js +3 -3
  71. package/dist/esm/uno/theme/colors.js.map +1 -1
  72. package/package.json +1 -1
  73. package/src/__screenshots__/themes.snapshots.tsx/snapshot-chromium-win32.png +0 -0
  74. package/src/components/button/Button.tsx +1 -1
  75. package/src/components/button/classes.tsx +3 -4
  76. package/src/components/camera/Camera.tsx +5 -5
  77. package/src/components/card/Card.tsx +6 -6
  78. package/src/components/checkbox/Checkbox.tsx +2 -2
  79. package/src/components/datePicker/Calendar.tsx +2 -2
  80. package/src/components/datePicker/DateRangePicker.tsx +3 -3
  81. package/src/components/editableText/EditableText.tsx +2 -1
  82. package/src/components/horizontalList/HorizontalList.tsx +2 -1
  83. package/src/components/input/Input.tsx +2 -2
  84. package/src/components/lightbox/Lightbox.tsx +1 -1
  85. package/src/components/navBar/NavBar.tsx +101 -101
  86. package/src/components/note/Note.tsx +3 -3
  87. package/src/components/primitives/menus.tsx +1 -1
  88. package/src/components/progress/Progress.tsx +101 -101
  89. package/src/components/provider/Provider.tsx +4 -0
  90. package/src/components/provider/TweakPane.tsx +139 -0
  91. package/src/components/scrollArea/ScrollArea.tsx +15 -15
  92. package/src/components/slider/Slider.tsx +103 -97
  93. package/src/components/switch/Switch.tsx +38 -38
  94. package/src/components/tabs/tabs.tsx +2 -1
  95. package/src/components/toggleGroup/toggleGroup.tsx +1 -1
  96. package/src/components/viewport/Viewport.tsx +1 -1
  97. package/src/hooks/useVisualViewportOffset.ts +15 -13
  98. package/src/themes.stories.tsx +2 -0
  99. package/src/uno/logic/properties.ts +6 -0
  100. package/src/uno/preflights/user.ts +13 -0
  101. package/src/uno/rules/focus.ts +46 -0
  102. package/src/uno/rules/index.ts +2 -0
  103. package/src/uno/theme/colors.ts +7 -3
@@ -14,5 +14,6 @@ export interface UserPreflightOptions {
14
14
  cornerScale?: number;
15
15
  shadowSpread?: number;
16
16
  fontSize?: number;
17
+ focusColor?: 'black' | 'primary' | 'accent' | 'gray';
17
18
  }
18
- export declare const userPreflight: ({ saturation, primaryHue, accentHue, spacingScale, borderScale, cornerScale, shadowSpread, namedHues, fontSize, }: UserPreflightOptions) => import("unocss").Preflight<object>;
19
+ export declare const userPreflight: ({ saturation, primaryHue, accentHue, spacingScale, borderScale, cornerScale, shadowSpread, namedHues, fontSize, focusColor, }: UserPreflightOptions) => import("unocss").Preflight<object>;
@@ -2,7 +2,7 @@
2
2
  import { defaultPresetHues } from '../defaults.js';
3
3
  import { PROPS } from '../logic/properties.js';
4
4
  import { preflight } from './_util.js';
5
- export const userPreflight = ({ saturation = 50, primaryHue = defaultPresetHues.lemon.sourceHue, accentHue = defaultPresetHues.leek.sourceHue, spacingScale = 1, borderScale = 1, cornerScale = 1, shadowSpread = 1, namedHues, fontSize = 16, }) => preflight({
5
+ export const userPreflight = ({ saturation = 50, primaryHue = defaultPresetHues.lemon.sourceHue, accentHue = defaultPresetHues.leek.sourceHue, spacingScale = 1, borderScale = 1, cornerScale = 1, shadowSpread = 1, namedHues, fontSize = 16, focusColor = 'accent', }) => preflight({
6
6
  getCSS: () => {
7
7
  return `
8
8
  @layer preflightBase {
@@ -15,6 +15,7 @@ export const userPreflight = ({ saturation = 50, primaryHue = defaultPresetHues.
15
15
 
16
16
  ${PROPS.USER.COLOR.PRIMARY_HUE}: ${primaryHue};
17
17
  ${PROPS.USER.COLOR.ACCENT_HUE}: ${accentHue};
18
+ ${PROPS.USER.FOCUS_COLOR}: var(${focusColors[focusColor]});
18
19
  ${namedHues
19
20
  ? Object.entries(namedHues)
20
21
  .flatMap(([name, config]) => [
@@ -32,4 +33,10 @@ export const userPreflight = ({ saturation = 50, primaryHue = defaultPresetHues.
32
33
  `;
33
34
  },
34
35
  });
36
+ const focusColors = {
37
+ black: PROPS.MODE.BLACK,
38
+ primary: PROPS.PALETTE.NAMED_SHADES('primary').DARK,
39
+ accent: PROPS.PALETTE.NAMED_SHADES('accent').MID,
40
+ gray: PROPS.PALETTE.GRAY_SHADES.DARK,
41
+ };
35
42
  //# sourceMappingURL=user.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../src/uno/preflights/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoBvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC7B,UAAU,GAAG,EAAE,EACf,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAC9C,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAC5C,YAAY,GAAG,CAAC,EAChB,WAAW,GAAG,CAAC,EACf,WAAW,GAAG,CAAC,EACf,YAAY,GAAG,CAAC,EAChB,SAAS,EACT,QAAQ,GAAG,EAAE,GACS,EAAE,EAAE,CAC1B,SAAS,CAAC;IACT,MAAM,EAAE,GAAG,EAAE;QACZ,OAAO;;;IAGN,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,GAAG,GAAG;IAC1C,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW;IACvC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,YAAY;IACzC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW;IACvC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,YAAY;;IAEzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU;IAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;IAE1C,SAAS;YACR,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;iBACxB,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;gBAC5B,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,GAAG;gBAC3D,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KACzC,MAAM,CAAC,SACR,GAAG;aACH,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC;YACb,CAAC,CAAC,EACJ;;;;eAIa,QAAQ;;;CAGtB,CAAC;IACA,CAAC;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../src/uno/preflights/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqBvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC7B,UAAU,GAAG,EAAE,EACf,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAC9C,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAC5C,YAAY,GAAG,CAAC,EAChB,WAAW,GAAG,CAAC,EACf,WAAW,GAAG,CAAC,EACf,YAAY,GAAG,CAAC,EAChB,SAAS,EACT,QAAQ,GAAG,EAAE,EACb,UAAU,GAAG,QAAQ,GACC,EAAE,EAAE,CAC1B,SAAS,CAAC;IACT,MAAM,EAAE,GAAG,EAAE;QACZ,OAAO;;;IAGN,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,GAAG,GAAG;IAC1C,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW;IACvC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,YAAY;IACzC,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW;IACvC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,YAAY;;IAEzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,UAAU;IAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;IACzC,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,WAAW,CAAC,UAAU,CAAC;IAEvD,SAAS;YACR,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;iBACxB,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;gBAC5B,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,SAAS,GAAG;gBAC3D,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KACzC,MAAM,CAAC,SACR,GAAG;aACH,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC;YACb,CAAC,CAAC,EACJ;;;;eAIa,QAAQ;;;CAGtB,CAAC;IACA,CAAC;CACD,CAAC,CAAC;AAEJ,MAAM,WAAW,GAGb;IACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;IACvB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI;IACnD,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG;IAChD,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI;CACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Theme } from '@unocss/preset-mini';
2
+ import { Rule } from 'unocss';
3
+ export declare const focusRules: Rule<Theme>[];
@@ -0,0 +1,43 @@
1
+ // @unocss-include
2
+ import { PROPS } from '../logic/properties.js';
3
+ export const focusRules = [
4
+ [
5
+ /^foc(?:-effect)?(-lg)?$/,
6
+ function* ([, size], { symbols }) {
7
+ yield {
8
+ [symbols.selector]: (selector) => `${selector}:focus-visible:not([data-focus-clicked]), ${selector}[data-focus-visible]`,
9
+ [PROPS.BUILT_IN.RING_COLOR]: `var(${PROPS.USER.FOCUS_COLOR})`,
10
+ [PROPS.BUILT_IN.RING_WIDTH]: size === '-lg' ? '4px' : '2px',
11
+ [PROPS.BUILT_IN.RING_STYLE]: 'solid',
12
+ [PROPS.BUILT_IN
13
+ .RING_SHADOW]: `var(${PROPS.BUILT_IN.RING_INSET}) 0 0 0 var(${PROPS.BUILT_IN.RING_WIDTH}) var(${PROPS.BUILT_IN.RING_COLOR})`,
14
+ outline: 'none',
15
+ 'box-shadow': `var(${PROPS.BUILT_IN.RING_OFFSET_SHADOW}), var(${PROPS.BUILT_IN.RING_SHADOW}), var(${PROPS.BUILT_IN.SHADOW})`,
16
+ };
17
+ yield {
18
+ [symbols.selector]: (selector) => `${selector}:focus`,
19
+ outline: 'none',
20
+ };
21
+ },
22
+ ],
23
+ [
24
+ /^foc-contained(-lg)?$/,
25
+ function* ([, size], { symbols }) {
26
+ yield {
27
+ [symbols.selector]: (selector) => `${selector}:has(:focus-visible:not([data-focus-clicked])), ${selector}:has([data-focus-visible])`,
28
+ [PROPS.BUILT_IN.RING_COLOR]: `var(${PROPS.USER.FOCUS_COLOR})`,
29
+ [PROPS.BUILT_IN.RING_WIDTH]: size === '-lg' ? '4px' : '2px',
30
+ [PROPS.BUILT_IN.RING_STYLE]: 'solid',
31
+ [PROPS.BUILT_IN
32
+ .RING_SHADOW]: `0 0 0 var(${PROPS.BUILT_IN.RING_WIDTH}) var(${PROPS.BUILT_IN.RING_COLOR})`,
33
+ outline: 'none',
34
+ 'box-shadow': `var(${PROPS.BUILT_IN.RING_OFFSET_SHADOW}), var(${PROPS.BUILT_IN.RING_SHADOW})`,
35
+ };
36
+ yield {
37
+ [symbols.selector]: (selector) => `${selector}>*:focus`,
38
+ outline: 'none',
39
+ };
40
+ },
41
+ ],
42
+ ];
43
+ //# sourceMappingURL=focus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.js","sourceRoot":"","sources":["../../../../src/uno/rules/focus.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE/C,MAAM,CAAC,MAAM,UAAU,GAAkB;IACxC;QACC,yBAAyB;QACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;YAC/B,MAAM;gBACL,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAChC,GAAG,QAAQ,6CAA6C,QAAQ,sBAAsB;gBACvF,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG;gBAC7D,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;gBAC3D,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO;gBACpC,CAAC,KAAK,CAAC,QAAQ;qBACb,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,eAAe,KAAK,CAAC,QAAQ,CAAC,UAAU,SAAS,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG;gBAC7H,OAAO,EAAE,MAAM;gBACf,YAAY,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,kBAAkB,UAAU,KAAK,CAAC,QAAQ,CAAC,WAAW,UAAU,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG;aAC5H,CAAC;YACF,MAAM;gBACL,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,QAAQ;gBACrD,OAAO,EAAE,MAAM;aACf,CAAC;QACH,CAAC;KACD;IACD;QACC,uBAAuB;QACvB,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;YAC/B,MAAM;gBACL,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAChC,GAAG,QAAQ,mDAAmD,QAAQ,4BAA4B;gBACnG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG;gBAC7D,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;gBAC3D,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO;gBACpC,CAAC,KAAK,CAAC,QAAQ;qBACb,WAAW,CAAC,EAAE,aAAa,KAAK,CAAC,QAAQ,CAAC,UAAU,SAAS,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG;gBAC3F,OAAO,EAAE,MAAM;gBACf,YAAY,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,kBAAkB,UAAU,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG;aAC7F,CAAC;YACF,MAAM;gBACL,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,UAAU;gBACvD,OAAO,EAAE,MAAM;aACf,CAAC;QACH,CAAC;KACD;CACD,CAAC"}
@@ -1 +1 @@
1
- export declare const rules: import("unocss").Rule[];
1
+ export declare const rules: (import("unocss").StaticRule | import("unocss").DynamicRule<object> | import("unocss").DynamicRule<import("unocss").PresetUnoTheme>)[];
@@ -3,6 +3,7 @@ import { anchorRules } from './anchor.js';
3
3
  import { clipPathRules } from './clipPath.js';
4
4
  import { colorRules } from './color.js';
5
5
  import { containerRules } from './container.js';
6
+ import { focusRules } from './focus.js';
6
7
  import { overflowRules } from './overflow.js';
7
8
  import { shadowRules } from './shadow.js';
8
9
  import { utilRules } from './util.js';
@@ -19,5 +20,6 @@ export const rules = [
19
20
  ...utilRules,
20
21
  ...clipPathRules,
21
22
  ...containerRules,
23
+ ...focusRules,
22
24
  ];
23
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/uno/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,yCAAyC;AACzC,kBAAkB;AAClB,gFAAgF;AAChF,MAAM;AAEN,uEAAuE;AAEvE,MAAM,CAAC,MAAM,KAAK,GAAG;IACpB,GAAG,UAAU;IACb,GAAG,WAAW;IACd,GAAG,aAAa;IAChB,GAAG,WAAW;IACd,GAAG,SAAS;IACZ,GAAG,aAAa;IAChB,GAAG,cAAc;CACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/uno/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,yCAAyC;AACzC,kBAAkB;AAClB,gFAAgF;AAChF,MAAM;AAEN,uEAAuE;AAEvE,MAAM,CAAC,MAAM,KAAK,GAAG;IACpB,GAAG,UAAU;IACb,GAAG,WAAW;IACd,GAAG,aAAa;IAChB,GAAG,WAAW;IACd,GAAG,SAAS;IACZ,GAAG,aAAa;IAChB,GAAG,cAAc;IACjB,GAAG,UAAU;CACb,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { Theme } from '@unocss/preset-mini';
2
2
  import { PreflightConfig } from '../preflights/index.js';
3
- export declare function makeThemeColors(options: PreflightConfig): Theme['colors'];
3
+ export declare function makeThemeColors({ namedHues, }: PreflightConfig): Theme['colors'];
@@ -1,11 +1,11 @@
1
1
  // @unocss-include
2
2
  import { PROPS } from '../logic/properties.js';
3
3
  const contrastClamp = 'clamp(0, (0.36 / y - 1) * infinity, 1)';
4
- export function makeThemeColors(options) {
4
+ export function makeThemeColors({ namedHues, }) {
5
5
  return Object.assign({ none: 'transparent', transparent: 'transparent', current: 'currentColor', black: `var(${PROPS.PALETTE.NAMED_SHADES('high-contrast').INK})`, white: `var(${PROPS.PALETTE.NAMED_SHADES('high-contrast').WASH})`, wash: `var(${PROPS.PALETTE.GRAY_SHADES.WASH})`,
6
6
  // magic tokens
7
- contrast: `color(from var(${PROPS.BACKGROUND_COLOR.CONTRAST},var(${PROPS.BACKGROUND_COLOR.FINAL},var(${PROPS.BACKGROUND_COLOR.INHERITED},var(${PROPS.MODE.WHITE})))) xyz-d65 ${contrastClamp} ${contrastClamp} ${contrastClamp})`, bg: `var(${PROPS.BACKGROUND_COLOR.FINAL}, var(${PROPS.BACKGROUND_COLOR.INHERITED}, transparent))`, fg: `var(${PROPS.COLOR.FINAL}, var(${PROPS.COLOR.INHERITED}, var(${PROPS.MODE.BLACK})))`, color: `var(${PROPS.COLOR.FINAL}, var(${PROPS.COLOR.INHERITED}, var(${PROPS.MODE.BLACK})))`, border: `var(${PROPS.BORDER_COLOR.ALL.FINAL}, var(${PROPS.BORDER_COLOR.ALL.INHERITED}, transparent))`, primary: shadesOf(PROPS.PALETTE.NAMED_SHADES('primary')), accent: shadesOf(PROPS.PALETTE.NAMED_SHADES('accent')), attention: shadesOf(PROPS.PALETTE.NAMED_SHADES('attention')), success: shadesOf(PROPS.PALETTE.NAMED_SHADES('success')), main: shadesOf(PROPS.PALETTE.SHADES), gray: shadesOf(PROPS.PALETTE.GRAY_SHADES) }, (options.namedHues
8
- ? Object.fromEntries(Object.keys(options.namedHues).map(([name]) => [
7
+ contrast: `color(from var(${PROPS.BACKGROUND_COLOR.CONTRAST},var(${PROPS.BACKGROUND_COLOR.FINAL},var(${PROPS.BACKGROUND_COLOR.INHERITED},var(${PROPS.MODE.WHITE})))) xyz-d65 ${contrastClamp} ${contrastClamp} ${contrastClamp})`, bg: `var(${PROPS.BACKGROUND_COLOR.FINAL}, var(${PROPS.BACKGROUND_COLOR.INHERITED}, transparent))`, fg: `var(${PROPS.COLOR.FINAL}, var(${PROPS.COLOR.INHERITED}, var(${PROPS.MODE.BLACK})))`, color: `var(${PROPS.COLOR.FINAL}, var(${PROPS.COLOR.INHERITED}, var(${PROPS.MODE.BLACK})))`, border: `var(${PROPS.BORDER_COLOR.ALL.FINAL}, var(${PROPS.BORDER_COLOR.ALL.INHERITED}, transparent))`, primary: shadesOf(PROPS.PALETTE.NAMED_SHADES('primary')), accent: shadesOf(PROPS.PALETTE.NAMED_SHADES('accent')), attention: shadesOf(PROPS.PALETTE.NAMED_SHADES('attention')), success: shadesOf(PROPS.PALETTE.NAMED_SHADES('success')), focus: `var(${PROPS.USER.FOCUS_COLOR})`, main: shadesOf(PROPS.PALETTE.SHADES), gray: shadesOf(PROPS.PALETTE.GRAY_SHADES) }, (namedHues
8
+ ? Object.fromEntries(Object.keys(namedHues).map(([name]) => [
9
9
  name,
10
10
  shadesOf(PROPS.PALETTE.NAMED_SHADES(name)),
11
11
  ]))
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../../src/uno/theme/colors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C,MAAM,aAAa,GAAG,wCAAwC,CAAC;AAE/D,MAAM,UAAU,eAAe,CAAC,OAAwB;IACvD,uBACC,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,cAAc,EAEvB,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,EAChE,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,EACjE,IAAI,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,GAAG;QAE9C,eAAe;QACf,QAAQ,EAAE,kBAAkB,KAAK,CAAC,gBAAgB,CAAC,QAAQ,QAAQ,KAAK,CAAC,gBAAgB,CAAC,KAAK,QAAQ,KAAK,CAAC,gBAAgB,CAAC,SAAS,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,gBAAgB,aAAa,IAAI,aAAa,IAAI,aAAa,GAAG,EACjO,EAAE,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAK,SAAS,KAAK,CAAC,gBAAgB,CAAC,SAAS,iBAAiB,EACjG,EAAE,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EACxF,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAC3F,MAAM,EAAE,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,iBAAiB,EAErG,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EACxD,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EACtD,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAC5D,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAExD,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAEtC,CAAC,OAAO,CAAC,SAAS;QACpB,CAAC,CAAC,MAAM,CAAC,WAAW,CAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI;YACJ,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC1C,CAAC,CACD;QACH,CAAC,CAAC,EAAE,CAAC,EACL;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,OAAoC;IACrD,OAAO;QACN,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,GAAG;QAC5B,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,GAAG;QAC9B,OAAO,EAAE,OAAO,OAAO,CAAC,GAAG,GAAG;QAC9B,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,GAAG;QAC5B,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,GAAG;KAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../../src/uno/theme/colors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAG/C,MAAM,aAAa,GAAG,wCAAwC,CAAC;AAE/D,MAAM,UAAU,eAAe,CAAC,EAC/B,SAAS,GACQ;IACjB,uBACC,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,cAAc,EAEvB,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,GAAG,GAAG,EAChE,KAAK,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,EACjE,IAAI,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,GAAG;QAE9C,eAAe;QACf,QAAQ,EAAE,kBAAkB,KAAK,CAAC,gBAAgB,CAAC,QAAQ,QAAQ,KAAK,CAAC,gBAAgB,CAAC,KAAK,QAAQ,KAAK,CAAC,gBAAgB,CAAC,SAAS,QAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,gBAAgB,aAAa,IAAI,aAAa,IAAI,aAAa,GAAG,EACjO,EAAE,EAAE,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAK,SAAS,KAAK,CAAC,gBAAgB,CAAC,SAAS,iBAAiB,EACjG,EAAE,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EACxF,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAC3F,MAAM,EAAE,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,iBAAiB,EAErG,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EACxD,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EACtD,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAC5D,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAExD,KAAK,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,EAEvC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAEtC,CAAC,SAAS;QACZ,CAAC,CAAC,MAAM,CAAC,WAAW,CAClB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI;YACJ,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC1C,CAAC,CACD;QACH,CAAC,CAAC,EAAE,CAAC,EACL;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,OAAoC;IACrD,OAAO;QACN,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,GAAG;QAC5B,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,GAAG;QAC9B,OAAO,EAAE,OAAO,OAAO,CAAC,GAAG,GAAG;QAC9B,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,GAAG;QAC5B,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,GAAG;KAC1B,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a-type/ui",
3
- "version": "5.0.8",
3
+ "version": "5.0.9",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "url": "https://github.com/a-type/ui"
@@ -93,7 +93,7 @@ export function ButtonRoot({
93
93
  ...props,
94
94
  disabled: disabled || isLoading,
95
95
  'data-disabled': visuallyDisabled,
96
- 'data-focus': visuallyFocused,
96
+ 'data-focus-visible': visuallyFocused ? true : undefined,
97
97
  'data-size': size,
98
98
  'data-loading': isLoading,
99
99
  'data-has-label': hasLabelChild,
@@ -48,7 +48,8 @@ export function getButtonClassName({
48
48
  emphasis === 'default',
49
49
  'layer-components:(color-main-ink bg-transparent aria-pressed:bg-main-wash)':
50
50
  emphasis === 'ghost',
51
- 'layer-components:bg-black': emphasis === 'contrast',
51
+ 'layer-components:bg-black layer-variants:focus-visible:ring-gray-dark':
52
+ emphasis === 'contrast',
52
53
  },
53
54
 
54
55
  {
@@ -65,9 +66,7 @@ export function getButtonClassName({
65
66
 
66
67
  'layer-components:hover:(ring-4 bg-main bg-lighten-2)',
67
68
 
68
- 'layer-components:focus:outline-off',
69
- 'layer-components:focus-visible:(outline-off ring-6 ring-accent)',
70
- 'layer-components:[&[data-focus=true]]:(outline-off ring-6 ring-accent)',
69
+ 'layer-components:foc-effect-lg',
71
70
 
72
71
  'layer-components:active:(ring-8 bg-darken-1)',
73
72
 
@@ -214,11 +214,11 @@ export function CameraShutterButton({
214
214
 
215
215
  const StyledShutterButton = withClassName(
216
216
  BaseButton,
217
- 'absolute bottom-3 left-1/2 -translate-x-1/2 w-16 h-16 bg-white rounded-full cursor-pointer border-2 border-black border-solid ring-2 ring-white opacity-80',
218
- 'hover:bg-gray-wash hover:opacity-100',
219
- 'focus-visible:bg-lighten-1',
220
- 'focus:ring-accent focus:outline-none focus:opacity-100',
221
- 'sm:w-8 sm:h-8',
217
+ 'layer-components:(absolute bottom-3 left-1/2 h-16 w-16 cursor-pointer border-2 rounded-full border-solid opacity-80 ring-2 bg-white border-black ring-white -translate-x-1/2)',
218
+ 'layer-components:(hover:opacity-100 hover:bg-gray-wash)',
219
+ 'layer-components:focus-visible:bg-lighten-1',
220
+ 'layer-components:(foc-effect focus:opacity-100)',
221
+ 'layer-components:(sm:h-8 sm:w-8)',
222
222
  );
223
223
 
224
224
  export interface CameraDeviceSelectorProps {
@@ -65,11 +65,11 @@ export function CardMain({
65
65
  classNames(
66
66
  'layer-components:cursor-pointer',
67
67
  'layer-components:hover:(color-black bg-black/10)',
68
- 'layer-components:focus:outline-none',
69
- 'layer-components:focus-visible:(outline-none ring-4 ring-inset bg-black/10 ring-accent)',
70
- 'layer-components:data-[visually-focused]:(ring-4 ring-inset bg-black/10 ring-accent)',
68
+ 'layer-components:foc-effect',
69
+ 'layer-components:focus-visible:(ring-inset bg-black/10)',
70
+ 'layer-components:data-[visually-focused]:(ring-inset bg-black/10)',
71
71
  'layer-components:disabled:(cursor-default)',
72
- 'layer-components:data-[visually-disabled]:(cursor-default)',
72
+ 'layer-components:data-[disabled]:(cursor-default)',
73
73
  ),
74
74
  className,
75
75
  ),
@@ -85,8 +85,8 @@ export function CardMain({
85
85
  state: {
86
86
  interactive: !!isInteractive,
87
87
  compact: !!compact,
88
- visuallyFocused: !!visuallyFocused,
89
- visuallyDisabled: !!visuallyDisabled,
88
+ focusVisible: !!visuallyFocused,
89
+ disabled: !!visuallyDisabled,
90
90
  },
91
91
  });
92
92
 
@@ -30,13 +30,13 @@ export function CheckboxRoot({
30
30
  {...props}
31
31
  className={classNames(
32
32
  'layer-components:(relative block h-28px w-28px flex-shrink-0 cursor-pointer border border-default rounded-lg shadow-sm transition-all bg-white)',
33
- 'layer-components:focus-visible:(outline-off ring-4 ring-accent)',
33
+ 'layer-components:foc-effect',
34
34
  checkedMode === 'faded'
35
35
  ? 'layer-components:data-[checked]:(animate-checkbox-fade animate-forwards bg-main)'
36
36
  : 'layer-components:data-[checked]:(bg-main border-main-ink)',
37
37
  'layer-components:[&:hover:not(:disabled)]:(ring-2 bg-lighten-2 ring-bg)',
38
38
  'layer-components:[&:active:not(:disabled)]:(ring-4 bg-darken-1)',
39
- 'layer-components:[&:disabled]:(shadow-none bg-transparent border-gray-light)',
39
+ 'layer-components:[&:disabled]:(bg-transparent border-gray-light shadow-none)',
40
40
  className,
41
41
  )}
42
42
  />
@@ -57,8 +57,8 @@ export const CalendarDay = withClassName(
57
57
  BaseCalendarDay,
58
58
  'layer-components:(relative mb--1px mr--1px border border-solid color-black bg-white border-transparent)',
59
59
  'layer-components:(flex cursor-pointer items-center justify-center transition)',
60
- 'layer-components:data-[highlighted]:(z-1 ring-2 ring-accent)',
61
- 'layer-components:hover:(z-1 ring-2 ring-accent)',
60
+ 'layer-components:data-[highlighted]:(z-1 outline-none ring-2 ring-focus)',
61
+ 'layer-components:hover:ouline-none layer-components:hover:(z-1 ring-2 ring-focus)',
62
62
  'layer-components:active:(rounded bg-main-light)',
63
63
  'layer-components:[&[data-selected]]:(z-2 rounded bg-main)',
64
64
  'layer-components:[&[data-in-range]]:(z-1 rounded-none bg-main-light)',
@@ -14,9 +14,9 @@ import {
14
14
 
15
15
  const RangeLayout = withClassName(
16
16
  'div',
17
- 'layer-components:(grid [grid-template-areas:"prevMonth_leftMonth_nextMonth""leftGrid_leftGrid_leftGrid"] [grid-template-columns:auto_1fr_auto])',
18
- 'layer-components:([grid-template-rows:auto_1fr] gap-2)',
19
- 'layer-components:sm:grid-areas-[prevMonth_leftMonth_rightMonth_nextMonth]-[leftGrid_leftGrid_rightGrid_rightGrid] sm:[grid-template-columns:auto_1fr_1fr_auto]',
17
+ 'layer-components:(grid grid-cols-[auto_1fr_auto] grid-areas-[prevMonth_leftMonth_nextMonth]-[leftGrid_leftGrid_leftGrid])',
18
+ 'layer-components:(grid-rows-[auto_1fr] gap-2)',
19
+ 'sm:grid-cols-[auto_1fr_1fr_auto] layer-components:sm:grid-areas-[prevMonth_leftMonth_rightMonth_nextMonth]-[leftGrid_leftGrid_rightGrid_rightGrid]',
20
20
  );
21
21
 
22
22
  function DateRangePickerMonthControls() {
@@ -107,7 +107,8 @@ export function EditableText({
107
107
  inputClassName,
108
108
  'layer-variants:(w-auto inline-flex items-center gap-sm rounded-md px-md text-left font-size-inherit color-inherit bg-transparent border-transparent shadow-none)',
109
109
  'layer-variants:hover:(bg-main-light/80)',
110
- 'layer-variants:focus-visible:(outline-none ring-2 bg-main-light/80 ring-accent)',
110
+ 'foc-effect',
111
+ 'layer-variants:focus-visible:(bg-main-light/80)',
111
112
  'cursor-pointer',
112
113
  className,
113
114
  )}
@@ -167,8 +167,9 @@ export function HorizontalList({
167
167
  emphasis="ghost"
168
168
  className={clsx(
169
169
  'layer-variants:(sticky left-0 top-2 z-1 flex-shrink-0)',
170
+ 'ring-inset foc',
170
171
  !open &&
171
- 'layer-variants:(h-full border-r rounded-none border-r-solid border-r-gray)',
172
+ 'layer-variants:(h-full border-r rounded-l-sm rounded-r-none border-r-solid border-r-gray)',
172
173
  )}
173
174
  >
174
175
  <Icon
@@ -20,10 +20,10 @@ export const inputClassName = clsx(
20
20
  );
21
21
 
22
22
  const inputBorderClassName = clsx(
23
- 'layer-components:(min-w-60px flex flex-row items-center gap-xs border-1 rounded-lg border-solid text-md shadow-sm shadow-inset transition-shadow color-black bg-white border-black)',
23
+ 'layer-components:(min-w-60px flex flex-row items-center gap-xs border-1 border-thin rounded-lg border-solid text-md shadow-sm shadow-inset transition-shadow color-black bg-white border-black)',
24
24
  'layer-components:(w-max-content overflow-clip)',
25
25
  'layer-components:[&:has(input:disabled),&:has(textarea:disabled)]:(bg-transparent border-gray shadow-none placeholder-gray-dark)',
26
- 'layer-components:[&:has(input:focus-visible),&:has(textarea:focus-visible)]:(outline-none ring ring-4 ring-accent)',
26
+ 'layer-components:foc-contained',
27
27
  'layer-variants:[&:has(input:focus[data-focus-clicked]),&:has(textarea:focus[data-focus-clicked])]:(outline-none ring ring-4 bg-lighten-3 ring-main-light)',
28
28
  'layer-components:[&:has(input:hover),&:has(textarea:hover)]:border-black',
29
29
  'layer-components:[&>.icon]:mx-sm',
@@ -16,7 +16,7 @@ export const LightboxRoot = Dialog.Root;
16
16
  export const LightboxTrigger = withClassName(
17
17
  Dialog.Trigger,
18
18
  'layer-components:cursor-pointer',
19
- 'layer-components:focus-visible:(outline-none ring ring-accent)',
19
+ 'foc-effect',
20
20
  );
21
21
  export const LightboxPortal = Dialog.Portal;
22
22
  export const LightboxTitle = () => (
@@ -1,101 +1,101 @@
1
- import { Button } from '@base-ui/react/button';
2
- import { UseRenderComponentProps } from '@base-ui/react/use-render';
3
- import classNames, { clsx } from 'clsx';
4
- import { ReactElement, ReactNode, Ref } from 'react';
5
- import { withClassName } from '../../hooks.js';
6
- import { Icon, IconProps } from '../icon/index.js';
7
-
8
- export const navBarItemClass = classNames(
9
- 'layer-components:(relative h-full flex flex-col cursor-pointer select-none items-center justify-center gap-6px whitespace-nowrap rounded-sm border-none px-3 py-1 text-sm transition-colors color-black bg-transparent)',
10
- 'layer-components:active:bg-darken-2',
11
- 'layer-components:hover:(bg-main-light)',
12
- 'layer-components:focus-visible:(outline-none ring-2 ring-accent)',
13
- 'layer-components:[&[data-active=true]]:(color-black color-lighten-2 bg-main-light/50)',
14
- 'layer-responsive:md:(h-auto flex-row-reverse justify-start gap-2 overflow-visible active:bg-darken-2)',
15
- );
16
-
17
- export interface NavBarItemProps extends UseRenderComponentProps<'button'> {
18
- className?: string;
19
- children?: ReactNode;
20
- active?: boolean;
21
- color?: 'primary' | 'gray';
22
- render?: ReactElement | (() => ReactElement);
23
- }
24
-
25
- export const NavBarItem = function NavBarItem({
26
- ref,
27
- className,
28
- active,
29
- color = 'primary',
30
- ...rest
31
- }: NavBarItemProps & {
32
- ref?: React.Ref<HTMLButtonElement>;
33
- }) {
34
- return (
35
- <Button
36
- ref={ref}
37
- className={classNames(navBarItemClass, `palette-${color}`, className)}
38
- data-active={active}
39
- {...rest}
40
- />
41
- );
42
- };
43
-
44
- export const NavBarItemIconWrapper = withClassName(
45
- 'div',
46
- 'layer-components:(relative flex)',
47
- 'layer-components:md:(p-6px rounded-lg bg-gray-blend)',
48
- 'layer-variants:md:[*[data-active=true]_&]:bg-[var(--bg)]',
49
- );
50
-
51
- export const NavBarItemText = withClassName(
52
- 'span',
53
- 'layer-components:(overflow-hidden inline-block text-xxs whitespace-nowrap text-ellipsis) layer-components:md:(text-md leading-normal)',
54
- );
55
-
56
- interface NavBarItemIconProps extends Omit<IconProps, 'name'> {
57
- name?: IconProps['name'];
58
- className?: string;
59
- children?: ReactNode;
60
- ref?: Ref<any>;
61
- }
62
- export const NavBarItemIcon = function NavBarItemIcon({
63
- ref,
64
- className,
65
- name = 'placeholder',
66
- ...rest
67
- }: NavBarItemIconProps) {
68
- return (
69
- <Icon
70
- name={name}
71
- className={clsx(
72
- 'layer-components:(relative z-1 flex color-inherit)',
73
- 'layer-variants:[*[data-active=true]_&]:fill-main',
74
- className,
75
- )}
76
- {...rest}
77
- ref={ref}
78
- />
79
- );
80
- };
81
-
82
- export const NavBarItemPip = withClassName(
83
- 'div',
84
- 'palette-attention',
85
- 'layer-components:(absolute top-6px right-6px w-6px h-6px rounded-lg bg-main shadow-sm)',
86
- );
87
-
88
- export const NavBarRoot = withClassName(
89
- 'div',
90
- 'layer-components:(grid [grid-auto-columns:1fr] [grid-auto-flow:column] justify-items-center w-full rounded-none overflow-hidden z-50 p-1 h-auto)',
91
- 'pb-[calc(0.25rem+env(safe-area-inset-bottom,0px))]',
92
- 'layer-components:md:(bg-transparent flex flex-col rounded-none border-none border-transparent shadow-none h-min-content overflow-y-auto overflow-x-hidden justify-start items-stretch gap-2 pb-10)',
93
- );
94
-
95
- export const NavBar = Object.assign(NavBarRoot, {
96
- Item: NavBarItem,
97
- ItemIcon: NavBarItemIcon,
98
- ItemText: NavBarItemText,
99
- ItemIconWrapper: NavBarItemIconWrapper,
100
- ItemPip: NavBarItemPip,
101
- });
1
+ import { Button } from '@base-ui/react/button';
2
+ import { UseRenderComponentProps } from '@base-ui/react/use-render';
3
+ import classNames, { clsx } from 'clsx';
4
+ import { ReactElement, ReactNode, Ref } from 'react';
5
+ import { withClassName } from '../../hooks.js';
6
+ import { Icon, IconProps } from '../icon/index.js';
7
+
8
+ export const navBarItemClass = classNames(
9
+ 'layer-components:(relative h-full flex flex-col cursor-pointer select-none items-center justify-center gap-6px whitespace-nowrap rounded-sm border-none px-3 py-1 text-sm transition-colors color-black bg-transparent)',
10
+ 'layer-components:active:bg-darken-2',
11
+ 'layer-components:hover:(bg-main-light)',
12
+ 'layer-components:foc-effect',
13
+ 'layer-components:[&[data-active=true]]:(color-black color-lighten-2 bg-main-light/50)',
14
+ 'layer-responsive:md:(h-auto flex-row-reverse justify-start gap-2 overflow-visible active:bg-darken-2)',
15
+ );
16
+
17
+ export interface NavBarItemProps extends UseRenderComponentProps<'button'> {
18
+ className?: string;
19
+ children?: ReactNode;
20
+ active?: boolean;
21
+ color?: 'primary' | 'gray';
22
+ render?: ReactElement | (() => ReactElement);
23
+ }
24
+
25
+ export const NavBarItem = function NavBarItem({
26
+ ref,
27
+ className,
28
+ active,
29
+ color = 'primary',
30
+ ...rest
31
+ }: NavBarItemProps & {
32
+ ref?: React.Ref<HTMLButtonElement>;
33
+ }) {
34
+ return (
35
+ <Button
36
+ ref={ref}
37
+ className={classNames(navBarItemClass, `palette-${color}`, className)}
38
+ data-active={active}
39
+ {...rest}
40
+ />
41
+ );
42
+ };
43
+
44
+ export const NavBarItemIconWrapper = withClassName(
45
+ 'div',
46
+ 'layer-components:(relative flex)',
47
+ 'layer-components:md:bg-gray-blend layer-components:md:(rounded-lg p-6px)',
48
+ 'layer-variants:md:[*[data-active=true]_&]:bg-[var(--bg)]',
49
+ );
50
+
51
+ export const NavBarItemText = withClassName(
52
+ 'span',
53
+ 'layer-components:(inline-block overflow-hidden text-ellipsis whitespace-nowrap text-xxs) layer-components:md:(text-md leading-normal)',
54
+ );
55
+
56
+ interface NavBarItemIconProps extends Omit<IconProps, 'name'> {
57
+ name?: IconProps['name'];
58
+ className?: string;
59
+ children?: ReactNode;
60
+ ref?: Ref<any>;
61
+ }
62
+ export const NavBarItemIcon = function NavBarItemIcon({
63
+ ref,
64
+ className,
65
+ name = 'placeholder',
66
+ ...rest
67
+ }: NavBarItemIconProps) {
68
+ return (
69
+ <Icon
70
+ name={name}
71
+ className={clsx(
72
+ 'layer-components:(relative z-1 flex color-inherit)',
73
+ 'layer-variants:[*[data-active=true]_&]:fill-main',
74
+ className,
75
+ )}
76
+ {...rest}
77
+ ref={ref}
78
+ />
79
+ );
80
+ };
81
+
82
+ export const NavBarItemPip = withClassName(
83
+ 'div',
84
+ 'palette-attention',
85
+ 'layer-components:(absolute right-6px top-6px h-6px w-6px rounded-lg shadow-sm bg-main)',
86
+ );
87
+
88
+ export const NavBarRoot = withClassName(
89
+ 'div',
90
+ 'layer-components:([grid-auto-columns:1fr] [grid-auto-flow:column] z-50 grid h-auto w-full justify-items-center overflow-hidden rounded-none p-1)',
91
+ 'pb-[calc(0.25rem+env(safe-area-inset-bottom,0px))]',
92
+ 'layer-components:md:(h-min-content flex flex-col items-stretch justify-start gap-2 overflow-x-hidden rounded-none border-none pb-10 bg-transparent border-transparent overflow-y-auto shadow-none)',
93
+ );
94
+
95
+ export const NavBar = Object.assign(NavBarRoot, {
96
+ Item: NavBarItem,
97
+ ItemIcon: NavBarItemIcon,
98
+ ItemText: NavBarItemText,
99
+ ItemIconWrapper: NavBarItemIconWrapper,
100
+ ItemPip: NavBarItemPip,
101
+ });
@@ -14,7 +14,7 @@ function NoteRoot({ className, color, children, ...rest }: NoteProps) {
14
14
  <div
15
15
  className={classNames(
16
16
  color && `palette-${color}`,
17
- 'layer-components:[&:has(input:focus-visible),&:has(textarea:focus-visible)]:(ring ring-4 ring-accent)',
17
+ 'foc-contained',
18
18
  'layer-variants:[&:has(input:focus[data-focus-clicked]),&:has(textarea:focus[data-focus-clicked])]:(ring ring-4 bg-lighten-3 ring-main-light)',
19
19
  className,
20
20
  )}
@@ -34,7 +34,7 @@ function NoteRoot({ className, color, children, ...rest }: NoteProps) {
34
34
  aria-hidden
35
35
  >
36
36
  {/* folded corner */}
37
- <div className="layer-components:(relative h-[20px] w-[20px] flex-[0_0_20px] border-0 border-solid border-main-dark) layer-variants:(border-b-1px border-l-1px)">
37
+ <div className="layer-components:(relative h-[20px] w-[20px] flex-[0_0_20px] border-0 border-solid border-main-dark) layer-variants:(border-b border-l)">
38
38
  {/* top corner */}
39
39
  <div
40
40
  className={`layer-components:(box-content h-0 w-0 transform-origin-br translate--7px rotate--45 border-13px border-solid border-transparent border-r-main-wash border-r-darken-1)`}
@@ -43,7 +43,7 @@ function NoteRoot({ className, color, children, ...rest }: NoteProps) {
43
43
  <div className="layer-components:(absolute left-9px top--3px h-27px w-0.5px transform-origin-cc rotate--45 bg-main-dark)" />
44
44
  </div>
45
45
  {/* bottom right corner */}
46
- <div className="layer-components:(flex-1 border-0 border-solid bg-main-wash bg-darken-1 border-main-dark) layer-variants:(border-b-1px border-r-1px)" />
46
+ <div className="layer-components:(flex-1 border-0 border-solid bg-main-wash bg-darken-1 border-main-dark) layer-variants:(border-b border-r)" />
47
47
  </div>
48
48
  </div>
49
49
  </div>
@@ -4,7 +4,7 @@ export const popupClassName = clsx(
4
4
  'layer-primitives:(max-w-90vw min-w-120px border rounded-md shadow-lg transition bg-white border-black)',
5
5
  'layer-primitives:transform-origin-[var(--transform-origin)]',
6
6
  'layer-primitives:(max-h-[--available-height] max-w-[--available-width])',
7
- 'layer-primitives:focus-visible:(outline-none ring-2 ring-accent)',
7
+ 'layer-primitives:foc',
8
8
 
9
9
  'transform-origin-[--transform-origin] will-change-transform',
10
10
  'important:motion-reduce:transition-none',